SL-16450 Don not crash viewer in case of invalid data type

master
Andrey Kleshchev 2021-12-07 17:56:02 +02:00
parent 0424b18eab
commit 150993e2c2
3 changed files with 27 additions and 0 deletions

View File

@ -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

View File

@ -212,6 +212,19 @@ Make sure your Internet connection is working properly.
yestext="OK"/>
</notification>
<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"

View File

@ -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.