Skip to content
Snippets Groups Projects
Commit d18b3d2a authored by Lynx Linden's avatar Lynx Linden
Browse files

EXT-7901 FIXED: Follow up fix to remove short-term hack.

As advertized, I have removed the short-term hack that I put in place
to make release note URLs work. I have now put in place a more general
and correct solution. The key observeration from Roxie is that SLE
SLurls should have the same hostname as the grid host. So now, URLs
like http://google.com/app are no longer categorized as a SLurl and
produce errors when you click on them.
parent c7ac4209
No related branches found
No related tags found
No related merge requests found
...@@ -44,7 +44,6 @@ const char* LLSLURL::SLURL_COM = "slurl.com"; ...@@ -44,7 +44,6 @@ const char* LLSLURL::SLURL_COM = "slurl.com";
// version is required also. // version is required also.
const char* LLSLURL::WWW_SLURL_COM = "www.slurl.com"; 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::MAPS_SECONDLIFE_COM = "maps.secondlife.com";
const char* LLSLURL::SLURL_X_GRID_LOCATION_INFO_SCHEME = "x-grid-location-info"; const char* LLSLURL::SLURL_X_GRID_LOCATION_INFO_SCHEME = "x-grid-location-info";
const char* LLSLURL::SLURL_APP_PATH = "app"; const char* LLSLURL::SLURL_APP_PATH = "app";
...@@ -183,15 +182,6 @@ LLSLURL::LLSLURL(const std::string& slurl) ...@@ -183,15 +182,6 @@ LLSLURL::LLSLURL(const std::string& slurl)
(slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME) || (slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME) ||
(slurl_uri.scheme() == LLSLURL::SLURL_X_GRID_LOCATION_INFO_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 // We're dealing with either a Standalone style slurl or slurl.com slurl
if ((slurl_uri.hostName() == LLSLURL::SLURL_COM) || if ((slurl_uri.hostName() == LLSLURL::SLURL_COM) ||
(slurl_uri.hostName() == LLSLURL::WWW_SLURL_COM) || (slurl_uri.hostName() == LLSLURL::WWW_SLURL_COM) ||
...@@ -202,6 +192,17 @@ LLSLURL::LLSLURL(const std::string& slurl) ...@@ -202,6 +192,17 @@ LLSLURL::LLSLURL(const std::string& slurl)
} }
else 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 // 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 // urls are properly formed, unlike the stinky maingrid style
mGrid = slurl_uri.hostName(); mGrid = slurl_uri.hostName();
......
...@@ -145,6 +145,7 @@ namespace tut ...@@ -145,6 +145,7 @@ namespace tut
ensure_equals(" slurl, region + coords", slurl.getSLURLString(), ensure_equals(" slurl, region + coords", slurl.getSLURLString(),
"http://maps.secondlife.com/secondlife/my%20region/1/2/3"); "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"); 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 - type", slurl.getType(), LLSLURL::LOCATION);
ensure_equals("grid slurl, region + coords", slurl.getSLURLString(), ensure_equals("grid slurl, region + coords", slurl.getSLURLString(),
...@@ -201,6 +202,7 @@ namespace tut ...@@ -201,6 +202,7 @@ namespace tut
ensure_equals("region" , "myregion", slurl.getRegion()); ensure_equals("region" , "myregion", slurl.getRegion());
ensure_equals("grid4", "util.aditi.lindenlab.com", slurl.getGrid()); 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"); slurl = LLSLURL("https://my.grid.com/app/foo/bar?12345");
ensure_equals("app", slurl.getType(), LLSLURL::APP); ensure_equals("app", slurl.getType(), LLSLURL::APP);
ensure_equals("appcmd", slurl.getAppCmd(), "foo"); ensure_equals("appcmd", slurl.getAppCmd(), "foo");
...@@ -241,6 +243,7 @@ namespace tut ...@@ -241,6 +243,7 @@ namespace tut
template<> template<> template<> template<>
void slurlTestObject::test<3>() void slurlTestObject::test<3>()
{ {
LLGridManager::getInstance()->setGridChoice("my.grid.com");
LLSLURL slurl = LLSLURL("https://my.grid.com/region/my%20region/1/2/3"); LLSLURL slurl = LLSLURL("https://my.grid.com/region/my%20region/1/2/3");
ensure_equals("login string", slurl.getLoginString(), "uri:my region&amp;1&amp;2&amp;3"); ensure_equals("login string", slurl.getLoginString(), "uri:my region&amp;1&amp;2&amp;3");
ensure_equals("location string", slurl.getLocationString(), "my region/1/2/3"); ensure_equals("location string", slurl.getLocationString(), "my region/1/2/3");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment