Login crash bug fix.
XMLRPCResponder constructor was missing.
This fixes the following crash signature:
VIEWER : 2012-12-12T14:25:13Z INFO("AppInit"): setStartupState: Startup state changing from STATE_LOGIN_NO_DATA_YET to STATE_LOGIN_DOWNLOADING
VIEWER : 2012-12-12T14:25:14Z INFO("AppInit"): transferRate: Buffer size: 1308 B
VIEWER : 2012-12-12T14:25:14Z INFO("AppInit"): transferRate: Transfer rate: 11 kb/s
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff33df7f5 in XMLRPC_RequestGetData () from /usr/lib/x86_64-linux-gnu/libxmlrpc-epi.so.0
(gdb) bt
Reason was that if the server replied with some error code then
mResponse was undefined.
I also added code to retry three times in that case;
the http status code that I get was 503, which really
mean "Service *temporarily* unavailable", so a retry
is in order.
This commit is contained in:
@@ -323,7 +323,16 @@ LLUserAuth::UserAuthcode LLUserAuth::parseResponse()
|
||||
// will all be string => string pairs.
|
||||
UserAuthcode rv = E_UNHANDLED_ERROR;
|
||||
XMLRPC_REQUEST response = mResponder->response();
|
||||
if(!response) return rv;
|
||||
if(!response)
|
||||
{
|
||||
U32 status = mResponder->http_status();
|
||||
// Is it an HTTP error?
|
||||
if (!(200 <= status && status < 400))
|
||||
{
|
||||
rv = E_HTTP_SERVER_ERROR;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
// clear out any old parsing
|
||||
mResponses.clear();
|
||||
|
||||
Reference in New Issue
Block a user