diff options
author | Oz Linden <oz@lindenlab.com> | 2015-03-23 22:39:18 -0400 |
---|---|---|
committer | Oz Linden <oz@lindenlab.com> | 2015-03-23 22:39:18 -0400 |
commit | d6f7a16a686a32a3369661b8db35860e7cae6e8f (patch) | |
tree | 07b0117b098fef20dd9ddc597e4c0599c4235a4d /indra/newview/llweb.cpp | |
parent | 7ba82a6409e4fc096407f0247b084950d1e3c14a (diff) | |
parent | c489f1f8647a77c8c7d5fb5b721433dd72cb49c8 (diff) |
merge changes for 3.7.26-release
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; } |