You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by sh...@apache.org on 2015/04/30 20:19:33 UTC

trafficserver git commit: TS-3573: Fix connection leak

Repository: trafficserver
Updated Branches:
  refs/heads/master cec7e3c2a -> e895bcc6a


TS-3573: Fix connection leak


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

Branch: refs/heads/master
Commit: e895bcc6aa64e595c31f682a5acf8e6537235c89
Parents: cec7e3c
Author: shinrich <sh...@yahoo-inc.com>
Authored: Thu Apr 30 13:19:07 2015 -0500
Committer: shinrich <sh...@yahoo-inc.com>
Committed: Thu Apr 30 13:19:07 2015 -0500

----------------------------------------------------------------------
 CHANGES                          |  2 ++
 iocore/net/UnixNetVConnection.cc | 19 +++++++++++++++++--
 2 files changed, 19 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e895bcc6/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index eae4f99..cb8ba65 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache Traffic Server 6.0.0
 
+  *) [TS-3575]: Fix connection leak.
+
   *) [TS-3538]: Perform server certificate validity check.
 
   *) [TS-3549]: Configurable option to avoid thundering herd problem 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e895bcc6/iocore/net/UnixNetVConnection.cc
----------------------------------------------------------------------
diff --git a/iocore/net/UnixNetVConnection.cc b/iocore/net/UnixNetVConnection.cc
index ae4d028..2e44010 100644
--- a/iocore/net/UnixNetVConnection.cc
+++ b/iocore/net/UnixNetVConnection.cc
@@ -143,7 +143,7 @@ read_signal_and_update(int event, UnixNetVConnection *vc)
     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);
+      Debug("inactivity_cop", "event %d: null read.vio cont, closing vc %p", event, vc);
       vc->closed = 1;
       break;
     default:
@@ -166,8 +166,23 @@ static inline int
 write_signal_and_update(int event, UnixNetVConnection *vc)
 {
   vc->recursion++;
-  if (NULL != vc->write.vio._cont)
+  if (vc->write.vio._cont) {
     vc->write.vio._cont->handleEvent(event, &vc->write.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 write.vio 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 */
     ink_assert(vc->thread == this_ethread());