Repository: trafficserver
Updated Branches:
  refs/heads/master f9a6930fc -> ae9a343a9


[TS-3949] Prevent active timeout event from firing
after PluginVC is closed.


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/ae9a343a
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/ae9a343a
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/ae9a343a

Branch: refs/heads/master
Commit: ae9a343a9ba861240d938c3c47391e3de5011a25
Parents: f9a6930
Author: Sudheer Vinukonda <[email protected]>
Authored: Sun Sep 27 05:41:10 2015 +0000
Committer: Sudheer Vinukonda <[email protected]>
Committed: Sun Sep 27 05:41:10 2015 +0000

----------------------------------------------------------------------
 proxy/PluginVC.cc | 6 ++++++
 1 file changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ae9a343a/proxy/PluginVC.cc
----------------------------------------------------------------------
diff --git a/proxy/PluginVC.cc b/proxy/PluginVC.cc
index d1072ad..fb29696 100644
--- a/proxy/PluginVC.cc
+++ b/proxy/PluginVC.cc
@@ -743,6 +743,12 @@ PluginVC::process_timeout(Event **e, int event_to_send)
 {
   ink_assert(*e == inactive_event || *e == active_event);
 
+  if (closed) {
+    // already closed, ignore the timeout event
+    // to avoid handle_event asserting use-after-free
+    return;
+  }
+
   if (read_state.vio.op == VIO::READ && !read_state.shutdown && 
read_state.vio.ntodo() > 0) {
     MUTEX_TRY_LOCK(lock, read_state.vio.mutex, (*e)->ethread);
     if (!lock.is_locked()) {

Reply via email to