Fix for 'with active responder' llerrs crash.
This fixes at least one case (crash report 8407), which comes down to not cleanly informing a responder of failure when the request url is empty (or so badly formed that it isn't a valid url). As a result, the statemachine would abort() without informing the responder - which is bad, sort of. The previous cases where the responder needed to be informed of a failure, namely "statemachine timed_out()" and "bad_socket()" when a socket suddenly becomes bad for unknown reason, have been replaced with the more general 'aborted()' function, which must be called before the statemachine calls abort(). Clearly this has been done for all cases of abort() now, so that if the llerrs fires again in the future then that would have to be after the statemachine calls finish(), which is still as "impossible" as it was - hence the llerrs is still there to make sure. The reason that this seldom happened on SL, and more often on opensim, even more often on home-brew test grids, seems plausible: malformed urls happen more in those cases. I also took the opportunity to improve the robustness of cases where the curl error code is checked: it makes no sense to check what curl gives as error code when an internal error occurred.
This commit is contained in:
@@ -636,7 +636,7 @@ static LLSD blocking_request(
|
||||
response["body"] = responder->getLLSD();
|
||||
}
|
||||
}
|
||||
else if (result == CURLE_OK)
|
||||
else if (result == CURLE_OK && !is_internal_http_error(http_status))
|
||||
{
|
||||
// We expect 404s, don't spam for them.
|
||||
if (http_status != 404)
|
||||
|
||||
Reference in New Issue
Block a user