diff options
author | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2015-02-25 17:02:06 -0500 |
---|---|---|
committer | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2015-02-25 17:02:06 -0500 |
commit | 2ab9678455ce2e894273cae1efd2e10f4aaee42b (patch) | |
tree | ce679a7b789d75a3d36816438c5a2fd5a5edfd1a /indra/newview/llweb.cpp | |
parent | d2de97ad8e84eedd42f4a0fe5b258617a96f154b (diff) | |
parent | 9b45bc992edf8d049d8a1abe2e778870a493295a (diff) |
merge
Diffstat (limited to 'indra/newview/llweb.cpp')
-rwxr-xr-x | indra/newview/llweb.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp index 0312972a22..0f0d9ce703 100755 --- a/indra/newview/llweb.cpp +++ b/indra/newview/llweb.cpp @@ -50,6 +50,8 @@ #include "llviewerwindow.h" #include "llnotificationsutil.h" +#include "uriparser/Uri.h" + #include <boost/regex.hpp> bool on_load_url_external_response(const LLSD& notification, const LLSD& response, bool async ); @@ -238,9 +240,23 @@ bool LLWeb::useExternalBrowser(const std::string &url) } else if (gSavedSettings.getU32("PreferredBrowserBehavior") == BROWSER_INT_LL_EXT_OTHERS) { - boost::regex pattern = boost::regex("\\b(lindenlab.com|secondlife.com)\\b", boost::regex::perl|boost::regex::icase); + UriParserStateA state; + UriUriA uri; + state.uri = &uri; + + std::string uri_string = url; + uriParseUriA(&state, uri_string.c_str()); + if (uri.hostText.first) + { + S32 length = uri.hostText.afterLast - uri.hostText.first; + std::string buf = uri.hostText.first; + uri_string = buf.substr(0,length); + } + uriFreeUriMembersA(&uri); + + boost::regex pattern = boost::regex("\\b(lindenlab.com|secondlife.com)$", boost::regex::perl|boost::regex::icase); boost::match_results<std::string::const_iterator> matches; - return !(boost::regex_search(url, matches, pattern)); + return !(boost::regex_search(uri_string, matches, pattern)); } return false; } |