diff options
| -rw-r--r-- | autobuild.xml | 14 | ||||
| -rw-r--r-- | indra/newview/VIEWER_VERSION.txt | 2 | ||||
| -rw-r--r-- | indra/newview/lllogininstance.cpp | 86 | ||||
| -rw-r--r-- | indra/newview/lllogininstance.h | 1 | 
4 files changed, 61 insertions, 42 deletions
diff --git a/autobuild.xml b/autobuild.xml index aca22f576f..723b0bf6c1 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -698,9 +698,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>66c308642234797ef82b1e22b96b5ae6</string> +              <string>4390c5182b5d6c397ef0396828093600</string>                <key>url</key> -              <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/106497/930538/freetype-2.12.1.576084-darwin64-576084.tar.bz2</string> +              <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/106585/931193/freetype-2.12.1.576132-darwin64-576132.tar.bz2</string>              </map>              <key>name</key>              <string>darwin64</string> @@ -722,9 +722,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>fb161e641d4f4bfdeefed6021c192331</string> +              <string>6ad01c23db703cd6ad2a491aae937379</string>                <key>url</key> -              <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/106496/930532/freetype-2.12.1.576084-windows-576084.tar.bz2</string> +              <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/106586/931203/freetype-2.12.1.576132-windows-576132.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string> @@ -734,16 +734,16 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>fe29d0aa898b534f3083ad53f04afd40</string> +              <string>db5f433b65a268a1ea601d7e29766cb1</string>                <key>url</key> -              <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/106495/930523/freetype-2.12.1.576084-windows64-576084.tar.bz2</string> +              <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/106587/931202/freetype-2.12.1.576132-windows64-576132.tar.bz2</string>              </map>              <key>name</key>              <string>windows64</string>            </map>          </map>          <key>version</key> -        <string>2.12.1.576084</string> +        <string>2.12.1.576132</string>        </map>        <key>glext</key>        <map> diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index 5db1411e12..4aa5a3a58e 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -6.6.7 +6.6.8 diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp index 82ecfbd4dc..dd8c9b2dde 100644 --- a/indra/newview/lllogininstance.cpp +++ b/indra/newview/lllogininstance.cpp @@ -451,26 +451,8 @@ void LLLoginInstance::handleLoginFailure(const LLSD& event)          LLSD args(llsd::map( "MESSAGE", LLTrans::getString(response["message_id"]) ));          LLSD payload; -        LLNotificationsUtil::add("PromptMFAToken", args, payload, [=](LLSD const & notif, LLSD const & response) { -            bool continue_clicked = response["continue"].asBoolean(); -            std::string token = response["token"].asString(); -            LL_DEBUGS("LLLogin") << "PromptMFAToken: response: " << response << " continue_clicked" << continue_clicked << LL_ENDL; - -            // strip out whitespace - SL-17034/BUG-231938 -            token = boost::regex_replace(token, boost::regex("\\s"), ""); - -            if (continue_clicked && !token.empty()) -            { -                LL_INFOS("LLLogin") << "PromptMFAToken: token submitted" << LL_ENDL; - -                // Set the request data to true and retry login. -                mRequestData["params"]["token"] = token; -                reconnect(); -            } else { -                LL_INFOS("LLLogin") << "PromptMFAToken: no token, attemptComplete" << LL_ENDL; -                attemptComplete(); -            } -        }); +        LLNotificationsUtil::add("PromptMFAToken", args, payload, +            boost::bind(&LLLoginInstance::handleMFAChallenge, this, _1, _2));      }      else if(   reason_response == "key"              || reason_response == "presence" @@ -547,23 +529,59 @@ void LLLoginInstance::handleIndeterminate(const LLSD& event)  bool LLLoginInstance::handleTOSResponse(bool accepted, const std::string& key)  { -	if(accepted) -	{	 -		LL_INFOS("LLLogin") << "LLLoginInstance::handleTOSResponse: accepted" << LL_ENDL; +    if(accepted) +    { +        LL_INFOS("LLLogin") << "LLLoginInstance::handleTOSResponse: accepted " << LL_ENDL; -		// Set the request data to true and retry login. -		mRequestData["params"][key] = true;  -		reconnect(); -	} -	else -	{ -		LL_INFOS("LLLogin") << "LLLoginInstance::handleTOSResponse: attemptComplete" << LL_ENDL; +        // Set the request data to true and retry login. +        mRequestData["params"][key] = true; -		attemptComplete(); -	} +        if (!mRequestData["params"]["token"].asString().empty()) +        { +            // SL-18511 this TOS failure happened while we are in the middle of an MFA challenge/response. +            // the previously entered token is very likely expired, so prompt again +            LLSD args(llsd::map( "MESSAGE", LLTrans::getString("LoginFailedAuthenticationMFARequired") )); +            LLSD payload; +            LLNotificationsUtil::add("PromptMFAToken", args, payload, +                boost::bind(&LLLoginInstance::handleMFAChallenge, this, _1, _2)); +        } +        else +        { +            reconnect(); +        } +    } +    else +    { +        LL_INFOS("LLLogin") << "LLLoginInstance::handleTOSResponse: attemptComplete" << LL_ENDL; + +        attemptComplete(); +    } + +    LLEventPumps::instance().obtain(TOS_REPLY_PUMP).stopListening(TOS_LISTENER_NAME); +    return true; +} -	LLEventPumps::instance().obtain(TOS_REPLY_PUMP).stopListening(TOS_LISTENER_NAME); -	return true; +bool LLLoginInstance::handleMFAChallenge(LLSD const & notif, LLSD const & response) +{ +    bool continue_clicked = response["continue"].asBoolean(); +    std::string token = response["token"].asString(); +    LL_DEBUGS("LLLogin") << "PromptMFAToken: response: " << response << " continue_clicked" << continue_clicked << LL_ENDL; + +    // strip out whitespace - SL-17034/BUG-231938 +    token = boost::regex_replace(token, boost::regex("\\s"), ""); + +    if (continue_clicked && !token.empty()) +    { +        LL_INFOS("LLLogin") << "PromptMFAToken: token submitted" << LL_ENDL; + +        // Set the request data to true and retry login. +        mRequestData["params"]["token"] = token; +        reconnect(); +    } else { +        LL_INFOS("LLLogin") << "PromptMFAToken: no token, attemptComplete" << LL_ENDL; +        attemptComplete(); +    } +    return true;  }  std::string construct_start_string() diff --git a/indra/newview/lllogininstance.h b/indra/newview/lllogininstance.h index b759b43474..ee3ef0e4b1 100644 --- a/indra/newview/lllogininstance.h +++ b/indra/newview/lllogininstance.h @@ -84,6 +84,7 @@ private:  	void syncWithUpdater(ResponsePtr resp, const LLSD& notification, const LLSD& response);  	bool handleTOSResponse(bool v, const std::string& key); +    bool handleMFAChallenge(LLSD const & notif, LLSD const & response);  	void attemptComplete() { mAttemptComplete = true; } // In the future an event?  | 
