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;