From: Stefan Eissing Date: Mon, 6 Mar 2017 15:45:05 +0000 (+0000) Subject: On the trunk: X-Git-Tag: 2.5.0-alpha~586 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=eebe5fa1c06368daa8a4aaa40a16fc592a40004f;p=thirdparty%2Fapache%2Fhttpd.git On the trunk: mod_proxy_http2: fixed retry behaviour when frontend connection uses http/1.1. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1785672 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index cf143aa541e..b38ff85fa43 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ -*- coding: utf-8 -*- Changes with Apache 2.5.0 + *) mod_proxy_http2: fixed retry behaviour when frontend connection uses + http/1.1. [Stefan Eissing] + *) mod_http2: separate mutex instances for each bucket beam, resulting in less lock contention. input beams only created when necessary. [Stefan Eissing] diff --git a/modules/http2/mod_proxy_http2.c b/modules/http2/mod_proxy_http2.c index 437fecc1c5a..f29f8c31248 100644 --- a/modules/http2/mod_proxy_http2.c +++ b/modules/http2/mod_proxy_http2.c @@ -276,6 +276,9 @@ static void request_done(h2_proxy_session *session, request_rec *r, h2_proxy_ctx *ctx = session->user_data; const char *task_id = apr_table_get(r->connection->notes, H2_TASK_ID_NOTE); + ap_log_cerror(APLOG_MARK, APLOG_TRACE1, status, r->connection, + "h2_proxy_session(%s): request done %s, touched=%d", + ctx->engine_id, task_id, touched); if (status != APR_SUCCESS) { if (!touched) { /* untouched request, need rescheduling */ @@ -289,6 +292,12 @@ static void request_done(h2_proxy_session *session, request_rec *r, return; } } + else if (!ctx->next) { + ap_log_cerror(APLOG_MARK, APLOG_TRACE1, status, r->connection, + "h2_proxy_session(%s): retry untouched request", + ctx->engine_id); + ctx->next = r; + } } else { const char *uri; @@ -606,7 +615,7 @@ run_session: } cleanup: - if (!reconnected && ctx->engine && next_request(ctx, 1) == APR_SUCCESS) { + if (!reconnected && next_request(ctx, 1) == APR_SUCCESS) { /* Still more to do, tear down old conn and start over */ if (ctx->p_conn) { ctx->p_conn->close = 1;