connRegistered_ = false;
assert(conn->pipeline.front() == this); // XXX: still assumes HTTP/1 semantics
conn->pipeline.popMe(ClientSocketContext::Pointer(this));
- conn->kick(); // kick anything which was waiting for us to finish
}
ClientSocketContext::ClientSocketContext(const Comm::ConnectionPointer &aConn, ClientHttpRequest *aReq) :
pullData();
break;
- case STREAM_COMPLETE:
+ case STREAM_COMPLETE: {
debugs(33, 5, conn << " Stream complete, keepalive is " << http->request->flags.proxyKeepalive);
+ ConnStateData *c = http->getConn();
if (!http->request->flags.proxyKeepalive)
clientConnection->close();
finished();
+ c->kick();
+ }
return;
case STREAM_UNPLANNED_COMPLETE:
* will perform all cleanup and deregistration operations. If the reason for
* finishing is an error, then notifyIoError() needs to be called prior to
* the finished() method.
+ * The caller should follow finished() with a call to ConnStateData::kick()
+ * to resume processing of other transactions or I/O on the connection.
+ *
* Alternatively the initiateClose() method can be called to terminate the
* whole client connection and all other pending contexts.
*