diff --git a/contrib/serf/CHANGES b/contrib/serf/CHANGES index 64eaaa3b5582..441eb1edf630 100644 --- a/contrib/serf/CHANGES +++ b/contrib/serf/CHANGES @@ -1,3 +1,7 @@ +Serf 1.3.6 [2014-06-09, from /tags/1.3.6, rxxxx] + Revert r2319 from serf 1.3.5: this change was making serf call handle_response + multiple times in case of an error response, leading to unexpected behavior. + Serf 1.3.5 [2014-04-27, from /tags/1.3.5, rxxxx] Fix issue #125: no reverse lookup during Negotiate authentication for proxies. Fix a crash caused by incorrect reuse of the ssltunnel CONNECT request (r2316) diff --git a/contrib/serf/auth/auth.c b/contrib/serf/auth/auth.c index 811709122a8c..6ba3ba5ab59e 100644 --- a/contrib/serf/auth/auth.c +++ b/contrib/serf/auth/auth.c @@ -408,7 +408,6 @@ apr_status_t serf__handle_auth_response(int *consumed_response, consider the reponse body as invalid and discard it. */ status = discard_body(response); *consumed_response = 1; - if (!APR_STATUS_IS_EOF(status)) { return status; } diff --git a/contrib/serf/outgoing.c b/contrib/serf/outgoing.c index 0d0e5e2e1c9a..3fc726c038e4 100644 --- a/contrib/serf/outgoing.c +++ b/contrib/serf/outgoing.c @@ -916,22 +916,21 @@ 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); + 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 there was an error reading the response (maybe there wasn't + enough data available), don't bother passing the response to the + application. - if (status) - return status; + If the authentication was tried, but failed, pass the response + to the application, maybe it can do better. */ + if (status) { + return status; + } } if (!consumed_response) { diff --git a/contrib/serf/serf.h b/contrib/serf/serf.h index 55d6a3a1b43e..d3ac2f3548de 100644 --- a/contrib/serf/serf.h +++ b/contrib/serf/serf.h @@ -1062,7 +1062,7 @@ void serf_debug__bucket_alloc_check( /* Version info */ #define SERF_MAJOR_VERSION 1 #define SERF_MINOR_VERSION 3 -#define SERF_PATCH_VERSION 5 +#define SERF_PATCH_VERSION 6 /* Version number string */ #define SERF_VERSION_STRING APR_STRINGIFY(SERF_MAJOR_VERSION) "." \