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 */

Reply via email to