diff options
Diffstat (limited to 'outgoing.c')
-rw-r--r-- | outgoing.c | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/outgoing.c b/outgoing.c index 3fc726c038e4..0d0e5e2e1c9a 100644 --- a/outgoing.c +++ b/outgoing.c @@ -916,21 +916,22 @@ static apr_status_t handle_response(serf_request_t *request, * themselves by not registering credential callbacks. */ if (request->conn->ctx->cred_cb) { - status = serf__handle_auth_response(&consumed_response, - request, - request->resp_bkt, - request->handler_baton, - pool); - - /* If there was an error reading the response (maybe there wasn't - enough data available), don't bother passing the response to the - application. - - If the authentication was tried, but failed, pass the response - to the application, maybe it can do better. */ - if (status) { - return status; - } + status = serf__handle_auth_response(&consumed_response, + request, + request->resp_bkt, + request->handler_baton, + pool); + + if (SERF_BUCKET_READ_ERROR(status)) { + /* Report the request as 'died'/'cancelled' to the application */ + (void)(*request->handler)(request, + NULL, + request->handler_baton, + pool); + } + + if (status) + return status; } if (!consumed_response) { |