You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ic...@apache.org on 2017/03/06 15:45:05 UTC

svn commit: r1785672 - in /httpd/httpd/trunk: CHANGES modules/http2/mod_proxy_http2.c

Author: icing
Date: Mon Mar  6 15:45:05 2017
New Revision: 1785672

URL: http://svn.apache.org/viewvc?rev=1785672&view=rev
Log:
On the trunk:

mod_proxy_http2: fixed retry behaviour when frontend connection uses 
     http/1.1. 


Modified:
    httpd/httpd/trunk/CHANGES
    httpd/httpd/trunk/modules/http2/mod_proxy_http2.c

Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=1785672&r1=1785671&r2=1785672&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Mon Mar  6 15:45:05 2017
@@ -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]

Modified: httpd/httpd/trunk/modules/http2/mod_proxy_http2.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/mod_proxy_http2.c?rev=1785672&r1=1785671&r2=1785672&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/http2/mod_proxy_http2.c (original)
+++ httpd/httpd/trunk/modules/http2/mod_proxy_http2.c Mon Mar  6 15:45:05 2017
@@ -276,6 +276,9 @@ static void request_done(h2_proxy_sessio
     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_sessio
                     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;