[MINOR] session: switch to established state if no connect function

When a stream interface has no connect() function, it means it is
immediately connected, so we don't need any connection request.
This will be used with unix sockets.
This commit is contained in:
Willy Tarreau 2009-08-16 18:27:24 +02:00
parent 6e6fb2beb9
commit 7320122655

View File

@ -1005,8 +1005,15 @@ resync_stream_interface:
/* it's possible that an upper layer has requested a connection setup or abort */
if (s->req->cons->state == SI_ST_INI &&
(s->req->flags & (BF_WRITE_ENA|BF_SHUTW|BF_SHUTW_NOW))) {
if ((s->req->flags & (BF_WRITE_ENA|BF_SHUTW|BF_SHUTW_NOW)) == BF_WRITE_ENA)
s->req->cons->state = SI_ST_REQ; /* new connection requested */
if ((s->req->flags & (BF_WRITE_ENA|BF_SHUTW|BF_SHUTW_NOW)) == BF_WRITE_ENA) {
/* If we have a ->connect method, we need to perform a connection request,
* otherwise we immediately switch to the connected state.
*/
if (s->req->cons->connect)
s->req->cons->state = SI_ST_REQ; /* new connection requested */
else
s->req->cons->state = SI_ST_EST; /* connection established */
}
else
s->req->cons->state = SI_ST_CLO; /* shutw+ini = abort */
}