diff --git a/indra/newview/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp index d6b64e23683192fd407c5165511758f7550f44b8..9ce67b5cd59f08de6ca36554998850402877bcc0 100755 --- a/indra/newview/llfloatersearch.cpp +++ b/indra/newview/llfloatersearch.cpp @@ -198,13 +198,9 @@ void LLFloaterSearch::search(const SearchQuery &p) // get the search URL and expand all of the substitutions // (also adds things like [LANGUAGE], [VERSION], [OS], etc.) - std::string url; - if (LLLoginInstance::getInstance()->hasResponse("search")) - url = LLLoginInstance::getInstance()->getResponse("search").asString(); - else if (LLGridManager::getInstance()->isInOpenSim()) - url = gSavedSettings.getString("OpenSimSearchURL"); - else - url = gSavedSettings.getString("SearchURL"); + LLViewerRegion* regionp = gAgent.getRegion(); + std::string url = regionp != nullptr ? regionp->getSearchServerURL() + : gSavedSettings.getString(LLGridManager::getInstance()->isInOpenSim() ? "OpenSimSearchURL" : "SearchURL"): url = LLWeb::expandURLSubstitutions(url, subs); // and load the URL in the web view diff --git a/indra/newview/llpanelsearchweb.cpp b/indra/newview/llpanelsearchweb.cpp index 3654ea86f958ee4a368a9425878202f8560025e8..5e6ca2296ae10ee6af80fccb01705d53ec870b6f 100644 --- a/indra/newview/llpanelsearchweb.cpp +++ b/indra/newview/llpanelsearchweb.cpp @@ -131,15 +131,10 @@ void LLPanelSearchWeb::loadUrl(const SearchQuery &p) // Get the search URL and expand all of the substitutions // (also adds things like [LANGUAGE], [VERSION], [OS], etc.) - std::string url; - if (LLLoginInstance::getInstance()->hasResponse("search")) - url = LLLoginInstance::getInstance()->getResponse("search").asString(); - else if (LLGridManager::getInstance()->isInOpenSim()) - url = gSavedSettings.getString("OpenSimSearchURL"); - else - url = gSavedSettings.getString("SearchURL"); + LLViewerRegion* regionp = gAgent.getRegion(); + std::string url = regionp != nullptr ? regionp->getSearchServerURL() + : gSavedSettings.getString(LLGridManager::getInstance()->isInOpenSim() ? "OpenSimSearchURL" : "SearchURL"): url = LLWeb::expandURLSubstitutions(url, subs); - // Finally, load the URL in the webpanel mWebBrowser->navigateTo(url, "text/html"); } diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 7482c23b2f7bdb7613b37ffc049222077c1eb5b8..58debfa394f168fd90a55c40d48ebfcc06b25783 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -57,6 +57,7 @@ #include "llfloaterreporter.h" #include "llfloaterregioninfo.h" #include "llhttpnode.h" +#include "lllogininstance.h" #include "llnotificationsutil.h" #include "llregioninfomodel.h" #include "llsdutil.h" @@ -80,6 +81,7 @@ #include "llfloaterperms.h" #include "llvieweroctree.h" #include "llviewerdisplay.h" +#include "llviewernetwork.h" #include "llviewerwindow.h" #include "llprogressview.h" @@ -3278,6 +3280,28 @@ std::string LLViewerRegion::getMapServerURL() const return url; } +std::string LLViewerRegion::getSearchServerURL() const +{ + std::string url; + // Check the region it trumps the grid + if (mSimulatorFeatures.has("OpenSimExtras") + && mSimulatorFeatures["OpenSimExtras"].has("search-server-url")) + { + url = mSimulatorFeatures["OpenSimExtras"]["search-server-url"].asString(); + } + // Check the login message + else if (LLLoginInstance::getInstance()->hasResponse("search")) + { + url = LLLoginInstance::getInstance()->getResponse("search").asString(); + } + // If all else fails, fall back to defaults + else + { + url = gSavedSettings.getString(LLGridManager::getInstance()->isInOpenSim() ? "OpenSimSearchURL" : "SearchURL"); + } + return url; +} + LLViewerTexture* LLViewerRegion::getMapImage() { if (mMapImage.isNull()) diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h index a8a5a642c0023915b86f90f6ef452774a788752d..0a17aa14873c6312451b228d70f6fd14be5d963f 100755 --- a/indra/newview/llviewerregion.h +++ b/indra/newview/llviewerregion.h @@ -391,6 +391,7 @@ public: static BOOL isNewObjectCreationThrottleDisabled() {return sNewObjectCreationThrottle < 0;} std::string getMapServerURL() const; + std::string getSearchServerURL() const; LLViewerTexture* getMapImage(); // <alchemy/> private: