summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorRider Linden <rider@lindenlab.com>2015-10-22 12:35:59 -0700
committerRider Linden <rider@lindenlab.com>2015-10-22 12:35:59 -0700
commit1641bdd5fb48696e8c36365dd3befed51782caed (patch)
treed839976914ccb8e68a5cd12aeccda095c9882c06 /indra/newview
parentf003455786c8cad0eefd7b896bb3359bcba301bd (diff)
MAINT-5788: Do not call set active if TOS window closed before site alive test returns.
Diffstat (limited to 'indra/newview')
-rwxr-xr-xindra/newview/llfloatertos.cpp16
-rwxr-xr-xindra/newview/llfloatertos.h2
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;