From: Willy Tarreau Date: Sun, 16 Aug 2009 16:27:24 +0000 (+0200) Subject: [MINOR] session: switch to established state if no connect function X-Git-Tag: v1.4-dev3~45 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=73201226551f735089e5f5444afa587cfb6939db;p=thirdparty%2Fhaproxy.git [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. --- diff --git a/src/session.c b/src/session.c index 1a18790021..5197a80f75 100644 --- a/src/session.c +++ b/src/session.c @@ -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 */ }