This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a commit to branch 8.1.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git

commit 71519ba534fb5bd5823f2d4a6b7ba56d371775a0
Author: Susan Hinrichs <[email protected]>
AuthorDate: Tue Feb 11 22:23:46 2020 +0000

    Fix crash when H2 client does not set End-of-data bit
    
    (cherry picked from commit 7d4f66b0b25f6aaccc2f9c7d2bde58ce2b47bd15)
---
 proxy/http/HttpSM.cc | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc
index b137470..e431c40 100644
--- a/proxy/http/HttpSM.cc
+++ b/proxy/http/HttpSM.cc
@@ -2696,6 +2696,8 @@ HttpSM::tunnel_handler_post(int event, void *data)
     handle_post_failure();
     break;
   case HTTP_SM_POST_UA_FAIL:
+    // Client side failed.  Shutdown and go home.  No need to communicate back 
to UA
+    terminate_sm = true;
     break;
   case HTTP_SM_POST_SUCCESS:
     // It's time to start reading the response
@@ -3441,9 +3443,7 @@ HttpSM::tunnel_handler_post_ua(int event, 
HttpTunnelProducer *p)
     hsm_release_assert(ua_entry->in_tunnel == true);
     if (p->consumer_list.head && p->consumer_list.head->vc_type == 
HT_TRANSFORM) {
       hsm_release_assert(post_transform_info.entry->in_tunnel == true);
-    } else if (server_entry != nullptr) {
-      hsm_release_assert(server_entry->in_tunnel == true);
-    }
+    } // server side may have completed before the user agent side, so it may 
no longer be in tunnel
     break;
 
   case VC_EVENT_READ_COMPLETE:
@@ -3580,7 +3580,8 @@ HttpSM::tunnel_handler_post_server(int event, 
HttpTunnelConsumer *c)
 
   case VC_EVENT_WRITE_COMPLETE:
     // Completed successfully
-    c->write_success = true;
+    c->write_success        = true;
+    server_entry->in_tunnel = false;
     break;
   default:
     ink_release_assert(0);

Reply via email to