From eebe5fa1c06368daa8a4aaa40a16fc592a40004f Mon Sep 17 00:00:00 2001 From: Stefan Eissing Date: Mon, 6 Mar 2017 15:45:05 +0000 Subject: [PATCH] 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 --- CHANGES | 3 +++ modules/http2/mod_proxy_http2.c | 11 ++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index cf143aa541..b38ff85fa4 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 437fecc1c5..f29f8c3124 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; -- 2.50.1