diff options
| -rw-r--r-- | indra/newview/llslurl.cpp | 21 | ||||
| -rw-r--r-- | indra/newview/tests/llslurl_test.cpp | 3 | 
2 files changed, 14 insertions, 10 deletions
| diff --git a/indra/newview/llslurl.cpp b/indra/newview/llslurl.cpp index 0308f5e632..4cf1df1655 100644 --- a/indra/newview/llslurl.cpp +++ b/indra/newview/llslurl.cpp @@ -44,7 +44,6 @@ const char* LLSLURL::SLURL_COM		         = "slurl.com";  // version is required also.  const char* LLSLURL::WWW_SLURL_COM				 = "www.slurl.com"; -const char* LLSLURL::SECONDLIFE_COM				 = "secondlife.com";  const char* LLSLURL::MAPS_SECONDLIFE_COM		 = "maps.secondlife.com";  const char* LLSLURL::SLURL_X_GRID_LOCATION_INFO_SCHEME = "x-grid-location-info";  const char* LLSLURL::SLURL_APP_PATH              = "app"; @@ -183,15 +182,6 @@ LLSLURL::LLSLURL(const std::string& slurl)  		   (slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME) ||   		   (slurl_uri.scheme() == LLSLURL::SLURL_X_GRID_LOCATION_INFO_SCHEME))  		{ -			// *HACK: ignore http://secondlife.com/ URLs so that we can use -			// http://secondlife.com/app/ redirect URLs -			// This is only necessary while the server returns Release Note -			// urls using this format rather that pointing to the wiki -			if ((slurl_uri.scheme() == LLSLURL::SLURL_HTTP_SCHEME || -				 slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME) && -				slurl_uri.hostName() == LLSLURL::SECONDLIFE_COM) -			  return; -  		    // We're dealing with either a Standalone style slurl or slurl.com slurl  		  if ((slurl_uri.hostName() == LLSLURL::SLURL_COM) ||  		      (slurl_uri.hostName() == LLSLURL::WWW_SLURL_COM) ||  @@ -202,6 +192,17 @@ LLSLURL::LLSLURL(const std::string& slurl)  			}  		    else  			{ +				// Don't try to match any old http://<host>/ URL as a SLurl. +				// SLE SLurls will have the grid hostname in the URL, so only +				// match http URLs if the hostname matches the grid hostname +				// (or its a slurl.com or maps.secondlife.com URL). +				if ((slurl_uri.scheme() == LLSLURL::SLURL_HTTP_SCHEME || +					 slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME) && +					slurl_uri.hostName() != LLGridManager::getInstance()->getGrid()) +				{ +					return; +				} +  				// As it's a Standalone grid/open, we will always have a hostname, as Standalone/open  style  				// urls are properly formed, unlike the stinky maingrid style  				mGrid = slurl_uri.hostName(); diff --git a/indra/newview/tests/llslurl_test.cpp b/indra/newview/tests/llslurl_test.cpp index 753151bdd8..91f316666c 100644 --- a/indra/newview/tests/llslurl_test.cpp +++ b/indra/newview/tests/llslurl_test.cpp @@ -145,6 +145,7 @@ namespace tut  		ensure_equals(" slurl, region + coords", slurl.getSLURLString(),   					  "http://maps.secondlife.com/secondlife/my%20region/1/2/3");	 +		LLGridManager::getInstance()->setGridChoice("my.grid.com");		  		slurl = LLSLURL("https://my.grid.com/region/my%20region/1/2/3");  		ensure_equals("grid slurl, region + coords - type", slurl.getType(), LLSLURL::LOCATION);  		ensure_equals("grid slurl, region + coords", slurl.getSLURLString(),  @@ -201,6 +202,7 @@ namespace tut  		ensure_equals("region" , "myregion", slurl.getRegion());  		ensure_equals("grid4", "util.aditi.lindenlab.com", slurl.getGrid());		 +		LLGridManager::getInstance()->setGridChoice("my.grid.com");  		slurl = LLSLURL("https://my.grid.com/app/foo/bar?12345");  		ensure_equals("app", slurl.getType(), LLSLURL::APP);		  		ensure_equals("appcmd", slurl.getAppCmd(), "foo"); @@ -241,6 +243,7 @@ namespace tut  	template<> template<>  	void slurlTestObject::test<3>()  	{ +		LLGridManager::getInstance()->setGridChoice("my.grid.com");		  		LLSLURL slurl = LLSLURL("https://my.grid.com/region/my%20region/1/2/3");  		ensure_equals("login string", slurl.getLoginString(), "uri:my region&1&2&3");  		ensure_equals("location string", slurl.getLocationString(), "my region/1/2/3"); | 
