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());