Repository: trafficserver Updated Branches: refs/heads/5.2.x b16f96835 -> 802bfb08f
[TS-3299] Fix leaking vc's during inactivitycop, due to null continuation Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/394e73b4 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/394e73b4 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/394e73b4 Branch: refs/heads/5.2.x Commit: 394e73b4ffe52629b4bea88d1115e22ec2145b6e Parents: b16f968 Author: Sudheer Vinukonda <[email protected]> Authored: Wed Feb 4 16:34:08 2015 +0000 Committer: Leif Hedstrom <[email protected]> Committed: Tue Feb 24 11:01:40 2015 -0700 ---------------------------------------------------------------------- iocore/net/UnixNetVConnection.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/394e73b4/iocore/net/UnixNetVConnection.cc ---------------------------------------------------------------------- diff --git a/iocore/net/UnixNetVConnection.cc b/iocore/net/UnixNetVConnection.cc index c497c2d..9ee5057 100644 --- a/iocore/net/UnixNetVConnection.cc +++ b/iocore/net/UnixNetVConnection.cc @@ -136,6 +136,20 @@ read_signal_and_update(int event, UnixNetVConnection *vc) vc->recursion++; if (vc->read.vio._cont) { vc->read.vio._cont->handleEvent(event, &vc->read.vio); + } else { + switch (event) { + case VC_EVENT_EOS: + case VC_EVENT_ERROR: + case VC_EVENT_ACTIVE_TIMEOUT: + case VC_EVENT_INACTIVITY_TIMEOUT: + Debug("inactivity_cop", "event %d: null cont, closing vc %p", event, vc); + vc->closed = 1; + break; + default: + Error ("Unexpected event %d for vc %p", event, vc); + ink_release_assert(0); + break; + } } if (!--vc->recursion && vc->closed) { /* BZ 31932 */
