You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by so...@apache.org on 2015/05/05 06:21:21 UTC

[09/11] trafficserver git commit: TS-3573: Fix connection leak

TS-3573: Fix connection leak

(cherry picked from commit e895bcc6aa64e595c31f682a5acf8e6537235c89)

Conflicts:
	CHANGES


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

Branch: refs/heads/5.3.x
Commit: 1801eef05033b72a7fc01678c64b334fe8cb96ce
Parents: f2d2391
Author: shinrich <sh...@yahoo-inc.com>
Authored: Thu Apr 30 13:19:07 2015 -0500
Committer: Phil Sorber <so...@apache.org>
Committed: Mon May 4 21:38:22 2015 -0600

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


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1801eef0/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 292a711..d5d994b 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache Traffic Server 5.3.0
 
+  *) [TS-3573] Fix connection leak.
+
   *) [TS-3558] Fix proxy.config.http.auth_server_session_private
 
   *) [TS-3533] Revert commits that break unregistered plugin loading.

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1801eef0/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());