summaryrefslogtreecommitdiff
path: root/modules/http2/mod_proxy_http2.c
diff options
context:
space:
mode:
authorStefan Eissing <icing@apache.org>2016-03-09 11:51:25 +0000
committerStefan Eissing <icing@apache.org>2016-03-09 11:51:25 +0000
commit28d50b0579d29e127bc29e7c268ecaa83956bb51 (patch)
treef506e7aa30e14e33bc84d45db903216737f8a5d2 /modules/http2/mod_proxy_http2.c
parent9abfad57050835dcabca140aab678a4ee79b8054 (diff)
downloadhttpd-28d50b0579d29e127bc29e7c268ecaa83956bb51.tar.gz
mod_proxy_http2: single engine per type per master connection, removing some race conditions on engine exit, mod_http2: better debug logging by tagging slave connection with task id
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1734221 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'modules/http2/mod_proxy_http2.c')
-rw-r--r--modules/http2/mod_proxy_http2.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/modules/http2/mod_proxy_http2.c b/modules/http2/mod_proxy_http2.c
index 0a752a8410..ab1bb09d2e 100644
--- a/modules/http2/mod_proxy_http2.c
+++ b/modules/http2/mod_proxy_http2.c
@@ -305,7 +305,10 @@ static apr_status_t proxy_engine_run(h2_proxy_ctx *ctx) {
if (status == APR_SUCCESS) {
apr_status_t s2;
/* ongoing processing, call again */
- ctx->capacity = H2MAX(100, session->remote_max_concurrent);
+ if (session->remote_max_concurrent > 0
+ && session->remote_max_concurrent != ctx->capacity) {
+ ctx->capacity = session->remote_max_concurrent;
+ }
s2 = next_request(ctx, 0);
if (s2 == APR_ECONNABORTED) {
/* master connection gone */
@@ -528,10 +531,12 @@ run_session:
cleanup:
if (ctx->engine && next_request(ctx, 1) == APR_SUCCESS) {
/* Still more to do, tear down old conn and start over */
- ctx->p_conn->close = 1;
- proxy_run_detach_backend(r, ctx->p_conn);
- ap_proxy_release_connection(ctx->proxy_func, ctx->p_conn, ctx->server);
- ctx->p_conn = NULL;
+ if (ctx->p_conn) {
+ ctx->p_conn->close = 1;
+ proxy_run_detach_backend(r, ctx->p_conn);
+ ap_proxy_release_connection(ctx->proxy_func, ctx->p_conn, ctx->server);
+ ctx->p_conn = NULL;
+ }
goto run_connect;
}