summaryrefslogtreecommitdiff
path: root/indra/viewer_components/login/lllogin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/viewer_components/login/lllogin.cpp')
-rw-r--r--indra/viewer_components/login/lllogin.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/indra/viewer_components/login/lllogin.cpp b/indra/viewer_components/login/lllogin.cpp
index 8af7453bd6..e1922367bf 100644
--- a/indra/viewer_components/login/lllogin.cpp
+++ b/indra/viewer_components/login/lllogin.cpp
@@ -148,7 +148,7 @@ void LLLogin::Impl::login_(LLCoros::self& self, std::string uri, LLSD login_para
<< " with uri '" << uri << "', parameters " << printable_params << LL_ENDL;
// Arriving in SRVRequest state
- LLEventStream replyPump("reply", true);
+ LLEventStream replyPump("SRVreply", true);
// Should be an array of one or more uri strings.
LLSD rewrittenURIs;
@@ -187,6 +187,10 @@ void LLLogin::Impl::login_(LLCoros::self& self, std::string uri, LLSD login_para
} // we no longer need the filter
LLEventPump& xmlrpcPump(LLEventPumps::instance().obtain("LLXMLRPCTransaction"));
+ // EXT-4193: use a DIFFERENT reply pump than for the SRV request. We used
+ // to share them -- but the EXT-3934 fix made it possible for an abandoned
+ // SRV response to arrive just as we were expecting the XMLRPC response.
+ LLEventStream loginReplyPump("loginreply", true);
// Loop through the rewrittenURIs, counting attempts along the way.
// Because of possible redirect responses, we may make more than one
@@ -197,7 +201,7 @@ void LLLogin::Impl::login_(LLCoros::self& self, std::string uri, LLSD login_para
urit != urend; ++urit)
{
LLSD request(login_params);
- request["reply"] = replyPump.getName();
+ request["reply"] = loginReplyPump.getName();
request["uri"] = *urit;
std::string status;
@@ -222,11 +226,11 @@ void LLLogin::Impl::login_(LLCoros::self& self, std::string uri, LLSD login_para
// possible for the reply to arrive before the post() call
// returns. Subsequent responses, of course, must be awaited
// without posting again.
- for (mAuthResponse = validateResponse(replyPump.getName(),
- postAndWait(self, request, xmlrpcPump, replyPump, "reply"));
+ for (mAuthResponse = validateResponse(loginReplyPump.getName(),
+ postAndWait(self, request, xmlrpcPump, loginReplyPump, "reply"));
mAuthResponse["status"].asString() == "Downloading";
- mAuthResponse = validateResponse(replyPump.getName(),
- waitForEventOn(self, replyPump)))
+ mAuthResponse = validateResponse(loginReplyPump.getName(),
+ waitForEventOn(self, loginReplyPump)))
{
// Still Downloading -- send progress update.
sendProgressEvent("offline", "downloading");