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

maskit pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
     new ae0a1d2  Fixing #3232, crash when making a server push
ae0a1d2 is described below

commit ae0a1d211738d91f2816141da43d7bc69fb5884d
Author: Zizhong Zhang <zizh...@linkedin.com>
AuthorDate: Tue Mar 6 11:37:20 2018 -0800

    Fixing #3232, crash when making a server push
---
 proxy/InkAPI.cc | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/proxy/InkAPI.cc b/proxy/InkAPI.cc
index 176c6e6..5e35f89 100644
--- a/proxy/InkAPI.cc
+++ b/proxy/InkAPI.cc
@@ -7747,8 +7747,9 @@ TSHttpTxnServerPush(TSHttpTxn txnp, const char *url, int 
url_len)
   HttpSM *sm          = reinterpret_cast<HttpSM *>(txnp);
   Http2Stream *stream = dynamic_cast<Http2Stream *>(sm->ua_txn);
   if (stream) {
-    Http2ClientSession *parent = static_cast<Http2ClientSession 
*>(stream->get_parent());
-    if (!parent->is_url_pushed(url, url_len)) {
+    Http2ClientSession *ua_session = static_cast<Http2ClientSession 
*>(stream->get_parent());
+    SCOPED_MUTEX_LOCK(lock, ua_session->mutex, this_ethread());
+    if (!ua_session->connection_state.is_state_closed() && 
!ua_session->is_url_pushed(url, url_len)) {
       HTTPHdr *hptr = &(sm->t_state.hdr_info.client_request);
       TSMLoc obj    = reinterpret_cast<TSMLoc>(hptr->m_http);
 
@@ -7756,7 +7757,7 @@ TSHttpTxnServerPush(TSHttpTxn txnp, const char *url, int 
url_len)
       MIMEField *f    = mime_hdr_field_find(mh, MIME_FIELD_ACCEPT_ENCODING, 
MIME_LEN_ACCEPT_ENCODING);
       stream->push_promise(url_obj, f);
 
-      parent->add_url_to_pushed_table(url, url_len);
+      ua_session->add_url_to_pushed_table(url, url_len);
     }
   }
   url_obj.destroy();

-- 
To stop receiving notification emails like this one, please contact
mas...@apache.org.

Reply via email to