[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 1a18790..5197a80 100644
--- a/src/session.c
+++ b/src/session.c
@@ -1005,8 +1005,15 @@
/* 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 */
}