Repository: trafficserver Updated Branches: refs/heads/master b3fab3619 -> 185956208
TS-3701 - Crash in trampoline cleanup Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/18595620 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/18595620 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/18595620 Branch: refs/heads/master Commit: 1859562086b330eed6eda637f5f98a3431db5915 Parents: b3fab36 Author: shinrich <[email protected]> Authored: Tue Oct 6 14:28:25 2015 -0500 Committer: shinrich <[email protected]> Committed: Tue Oct 6 14:28:25 2015 -0500 ---------------------------------------------------------------------- iocore/net/SSLNextProtocolAccept.cc | 4 ++++ 1 file changed, 4 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/18595620/iocore/net/SSLNextProtocolAccept.cc ---------------------------------------------------------------------- diff --git a/iocore/net/SSLNextProtocolAccept.cc b/iocore/net/SSLNextProtocolAccept.cc index c4748c3..df467f4 100644 --- a/iocore/net/SSLNextProtocolAccept.cc +++ b/iocore/net/SSLNextProtocolAccept.cc @@ -85,6 +85,8 @@ struct SSLNextProtocolTrampoline : public Continuation { case VC_EVENT_ERROR: case VC_EVENT_ACTIVE_TIMEOUT: case VC_EVENT_INACTIVITY_TIMEOUT: + // Cancel the read before we have a chance to delete the continuation + netvc->do_io_read(NULL, 0, NULL); netvc->do_io(VIO::CLOSE); delete this; return EVENT_ERROR; @@ -94,6 +96,8 @@ struct SSLNextProtocolTrampoline : public Continuation { return EVENT_ERROR; } + // Cancel the read before we have a chance to delete the continuation + netvc->do_io_read(NULL, 0, NULL); plugin = netvc->endpoint(); if (plugin) { send_plugin_event(plugin, NET_EVENT_ACCEPT, netvc);
