Handle "indeterminate" login response (indicating login server redirection). (This changeset will conflict in a future merge. Prefer this commits changeset where there's overlap)
This commit is contained in:
@@ -391,6 +391,7 @@ bool idle_startup()
|
|||||||
static LLUUID web_login_key;
|
static LLUUID web_login_key;
|
||||||
static std::string password;
|
static std::string password;
|
||||||
static std::vector<const char*> requested_options;
|
static std::vector<const char*> requested_options;
|
||||||
|
static std::string redirect_uri;
|
||||||
|
|
||||||
static LLVector3 initial_sun_direction(1.f, 0.f, 0.f);
|
static LLVector3 initial_sun_direction(1.f, 0.f, 0.f);
|
||||||
static LLVector3 agent_start_position_region(10.f, 10.f, 10.f); // default for when no space server
|
static LLVector3 agent_start_position_region(10.f, 10.f, 10.f); // default for when no space server
|
||||||
@@ -1255,6 +1256,8 @@ bool idle_startup()
|
|||||||
|
|
||||||
if (STATE_LOGIN_AUTHENTICATE == LLStartUp::getStartupState())
|
if (STATE_LOGIN_AUTHENTICATE == LLStartUp::getStartupState())
|
||||||
{
|
{
|
||||||
|
redirect_uri.clear();
|
||||||
|
|
||||||
LL_DEBUGS("AppInit") << "STATE_LOGIN_AUTHENTICATE" << LL_ENDL;
|
LL_DEBUGS("AppInit") << "STATE_LOGIN_AUTHENTICATE" << LL_ENDL;
|
||||||
set_startup_status(progress, auth_desc, auth_message);
|
set_startup_status(progress, auth_desc, auth_message);
|
||||||
|
|
||||||
@@ -1342,6 +1345,9 @@ bool idle_startup()
|
|||||||
|
|
||||||
LLViewerLogin* vl = LLViewerLogin::getInstance();
|
LLViewerLogin* vl = LLViewerLogin::getInstance();
|
||||||
std::string grid_uri = vl->getCurrentGridURI();
|
std::string grid_uri = vl->getCurrentGridURI();
|
||||||
|
if(!redirect_uri.empty())
|
||||||
|
grid_uri = redirect_uri;
|
||||||
|
//redirect_uri.clear(); //Should this be cleared immediately after consumption? Doing this will break retrying on http error.
|
||||||
|
|
||||||
llinfos << "Authenticating with " << grid_uri << llendl;
|
llinfos << "Authenticating with " << grid_uri << llendl;
|
||||||
|
|
||||||
@@ -1460,6 +1466,24 @@ bool idle_startup()
|
|||||||
successful_login = true;
|
successful_login = true;
|
||||||
Debug(if (gCurlIo) dc::curlio.off()); // Login succeeded: restore dc::curlio to original state.
|
Debug(if (gCurlIo) dc::curlio.off()); // Login succeeded: restore dc::curlio to original state.
|
||||||
}
|
}
|
||||||
|
else if(login_response == "indeterminate")
|
||||||
|
{
|
||||||
|
progress += 0.01f;
|
||||||
|
auth_message = message_response;
|
||||||
|
auth_method = response["next_method"].asString();
|
||||||
|
redirect_uri = response["next_url"].asString();
|
||||||
|
if(auth_method.substr(0, 5) == "login")
|
||||||
|
{
|
||||||
|
auth_desc = LLTrans::getString("LoginAuthenticating");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
auth_desc = LLTrans::getString("LoginMaintenance");
|
||||||
|
}
|
||||||
|
set_startup_status(progress, auth_desc, auth_message);
|
||||||
|
LLStartUp::setStartupState(STATE_XMLRPC_LEGACY_LOGIN );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
emsg << LLTrans::getString("LoginFailed") + "\n";
|
emsg << LLTrans::getString("LoginFailed") + "\n";
|
||||||
|
|||||||
Reference in New Issue
Block a user