From 238eadde6d8a7df1a8cdab4ed6cb24017479d529 Mon Sep 17 00:00:00 2001
From: Mnikolenko ProductEngine <mnikolenko@productengine.com>
Date: Thu, 2 Oct 2014 12:20:53 +0300
Subject: [PATCH] MAINT-4497 FIXED Use uriparser to find actual domain name.

---
 indra/newview/llweb.cpp | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp
index 0312972a22f..0f0d9ce703c 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;
 }
-- 
GitLab