diff options
| author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2021-12-07 17:56:02 +0200 | 
|---|---|---|
| committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2021-12-08 21:51:32 +0200 | 
| commit | 150993e2c2efbf75f268aec2d22257e4b562f274 (patch) | |
| tree | e091138be176f7ac8bcc1fa42360c742d4e580ca | |
| parent | 0424b18eab191056b855062f03a35fb55f90dad0 (diff) | |
SL-16450 Don not crash viewer in case of invalid data type
| -rw-r--r-- | indra/newview/llstartup.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/notifications.xml | 13 | ||||
| -rw-r--r-- | indra/viewer_components/login/lllogin.cpp | 10 | 
3 files changed, 27 insertions, 0 deletions
| diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index e20d714a3b..42bb267b33 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -1188,6 +1188,10 @@ bool idle_startup()  						}  					} +                    else if (reason_response == "BadType") +                    { +                        LLNotificationsUtil::add("LoginFailedToParse", LLSD(), LLSD(), login_alert_done); +                    }  					else if (!message.empty())  					{  						// This wasn't a certificate error, so throw up the normal diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index b769d20106..756bb52e3e 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -214,6 +214,19 @@ Make sure your Internet connection is working properly.    <notification     icon="alertmodal.tga" +   name="LoginFailedToParse" +   type="alertmodal"> +    <tag>fail</tag> +Viewer received malformed response from server. Please, make sure your Internet connection is working properly and try again later. + +If you feel this is in error, please contact Support. +    <usetemplate +       name="okbutton" +       yestext="OK"/> +  </notification> + +  <notification +   icon="alertmodal.tga"     name="MessageTemplateNotFound"     type="alertmodal">  Message Template [PATH] not found. diff --git a/indra/viewer_components/login/lllogin.cpp b/indra/viewer_components/login/lllogin.cpp index c2a0c46c83..168880dc12 100644 --- a/indra/viewer_components/login/lllogin.cpp +++ b/indra/viewer_components/login/lllogin.cpp @@ -284,6 +284,7 @@ void LLLogin::Impl::loginCoro(std::string uri, LLSD login_params)          // If we don't recognize status at all, trouble          if (! (status == "CURLError" +               || status == "BadType"                 || status == "XMLRPCError"                 || status == "OtherError"))          { @@ -293,6 +294,15 @@ void LLLogin::Impl::loginCoro(std::string uri, LLSD login_params)              return;          } +        if (status == "BadType") +        { +            // Invalid xmlrpc type +            // Dump this response into logs +            LL_WARNS("LLLogin") << "Failed to parse response" +                << " from " << xmlrpcPump.getName() +                << " pump: " << mAuthResponse << LL_ENDL; +        } +          // Here status IS one of the errors tested above.          // Tell caller this didn't work out so well. | 
