diff options
author | Rider Linden <rider@lindenlab.com> | 2015-10-22 12:35:59 -0700 |
---|---|---|
committer | Rider Linden <rider@lindenlab.com> | 2015-10-22 12:35:59 -0700 |
commit | 1641bdd5fb48696e8c36365dd3befed51782caed (patch) | |
tree | d839976914ccb8e68a5cd12aeccda095c9882c06 /indra/newview | |
parent | f003455786c8cad0eefd7b896bb3359bcba301bd (diff) |
MAINT-5788: Do not call set active if TOS window closed before site alive test returns.
Diffstat (limited to 'indra/newview')
-rwxr-xr-x | indra/newview/llfloatertos.cpp | 16 | ||||
-rwxr-xr-x | indra/newview/llfloatertos.h | 2 |
2 files changed, 13 insertions, 5 deletions
diff --git a/indra/newview/llfloatertos.cpp b/indra/newview/llfloatertos.cpp index 9bb4fe59ad..3597d70e0d 100755 --- a/indra/newview/llfloatertos.cpp +++ b/indra/newview/llfloatertos.cpp @@ -44,6 +44,7 @@ #include "message.h" #include "llstartup.h" // login_alert_done #include "llcorehttputil.h" +#include "llfloaterreg.h" LLFloaterTOS::LLFloaterTOS(const LLSD& data) : LLModalDialog( data["message"].asString() ), @@ -196,7 +197,7 @@ void LLFloaterTOS::handleMediaEvent(LLPluginClassMedia* /*self*/, EMediaEvent ev std::string url(getString("real_url")); LLCoros::instance().launch("LLFloaterTOS::testSiteIsAliveCoro", - boost::bind(&LLFloaterTOS::testSiteIsAliveCoro, this, url)); + boost::bind(&LLFloaterTOS::testSiteIsAliveCoro, url)); } else if(mRealNavigateBegun) { @@ -216,18 +217,25 @@ void LLFloaterTOS::testSiteIsAliveCoro(std::string url) LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest); LLCore::HttpOptions::ptr_t httpOpts = LLCore::HttpOptions::ptr_t(new LLCore::HttpOptions); + httpOpts->setWantHeaders(true); - LL_INFOS("HttpCoroutineAdapter", "genericPostCoro") << "Generic POST for " << url << LL_ENDL; + + LL_INFOS("testSiteIsAliveCoro") << "Generic POST for " << url << LL_ENDL; LLSD result = httpAdapter->getAndSuspend(httpRequest, url); LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS]; LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults); + LLFloaterTOS *that = LLFloaterReg::findTypedInstance<LLFloaterTOS>("message_tos"); // double not. - // First ! returns a boolean error status, second ! is true if success result. - setSiteIsAlive(!!status); + if (that) + that->setSiteIsAlive(static_cast<bool>(status)); + else + { + LL_WARNS("testSiteIsAliveCoro") << "Dialog canceled before response." << LL_ENDL; + } } diff --git a/indra/newview/llfloatertos.h b/indra/newview/llfloatertos.h index 2748b20513..b71b80ed24 100755 --- a/indra/newview/llfloatertos.h +++ b/indra/newview/llfloatertos.h @@ -62,7 +62,7 @@ public: /*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event); private: - void testSiteIsAliveCoro(std::string url); + static void testSiteIsAliveCoro(std::string url); std::string mMessage; bool mLoadingScreenLoaded; |