You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2012/01/08 23:36:09 UTC

svn commit: r1228988 - in /trafficserver/traffic/trunk: CHANGES iocore/net/SSLNetVConnection.cc

Author: zwoop
Date: Sun Jan  8 22:36:09 2012
New Revision: 1228988

URL: http://svn.apache.org/viewvc?rev=1228988&view=rev
Log:
1049 TS hangs (dead lock) on HTTPS POST requests
Author: Wilson Ho

Modified:
    trafficserver/traffic/trunk/CHANGES
    trafficserver/traffic/trunk/iocore/net/SSLNetVConnection.cc

Modified: trafficserver/traffic/trunk/CHANGES
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/CHANGES?rev=1228988&r1=1228987&r2=1228988&view=diff
==============================================================================
--- trafficserver/traffic/trunk/CHANGES (original)
+++ trafficserver/traffic/trunk/CHANGES Sun Jan  8 22:36:09 2012
@@ -1,5 +1,8 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache Traffic Server 3.1.2
+  *) [TS-1049] TS hangs (dead lock) on HTTPS POST requests.
+   Author: Wilson Ho
+
   *) [TS-1056] Lost UA connections can show up as "400 ERR_INVALID_REQ"
    in logs.
 

Modified: trafficserver/traffic/trunk/iocore/net/SSLNetVConnection.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/net/SSLNetVConnection.cc?rev=1228988&r1=1228987&r2=1228988&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/net/SSLNetVConnection.cc (original)
+++ trafficserver/traffic/trunk/iocore/net/SSLNetVConnection.cc Sun Jan  8 22:36:09 2012
@@ -166,15 +166,17 @@ ssl_read_from_net(NetHandler * nh, UnixN
 
 //changed by YTS Team, yamsat
 void
-SSLNetVConnection::net_read_io(NetHandler * nh, EThread * lthread)
+SSLNetVConnection::net_read_io(NetHandler *nh, EThread *lthread)
 {
   int ret;
   int64_t r = 0;
   int64_t bytes = 0;
   NetState *s = &this->read;
-  MIOBufferAccessor & buf = s->vio.buffer;
+  MIOBufferAccessor &buf = s->vio.buffer;
+
   MUTEX_TRY_LOCK_FOR(lock, s->vio.mutex, lthread, s->vio._cont);
   if (!lock) {
+    readReschedule(nh);
     return;
   }
   // If it is not enabled, lower its priority.  This allows
@@ -254,8 +256,10 @@ SSLNetVConnection::net_read_io(NetHandle
   case SSL_READ_WOULD_BLOCK:
     if (lock.m.m_ptr != s->vio.mutex.m_ptr) {
       Debug("ssl", "ssl_read_from_net, mutex switched");
-      if(ret == SSL_READ_WOULD_BLOCK) readReschedule(nh);
-      else writeReschedule(nh);
+      if (ret == SSL_READ_WOULD_BLOCK)
+        readReschedule(nh);
+      else
+        writeReschedule(nh);
       return;
     }
     // reset the tigger and remove from the ready queue
@@ -264,8 +268,10 @@ SSLNetVConnection::net_read_io(NetHandle
     nh->read_ready_list.remove(this);
     Debug("ssl", "read_from_net, read finished - would block");
 #ifdef TS_USE_PORT
-    if(ret == SSL_READ_WOULD_BLOCK) readReschedule(nh);
-    else writeReschedule(nh);
+    if (ret == SSL_READ_WOULD_BLOCK)
+      readReschedule(nh);
+    else
+      writeReschedule(nh);
 #endif
     break;