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()) {
