From 73201226551f735089e5f5444afa587cfb6939db Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 16 Aug 2009 18:27:24 +0200 Subject: [PATCH] [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. --- src/session.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/session.c b/src/session.c index 1a1879002..5197a80f7 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 */ }