]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: muxes: Rely on conn_is_back() during init to handle front/back conn
authorChristopher Faulet <cfaulet@haproxy.com>
Mon, 8 Apr 2019 08:46:02 +0000 (10:46 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Fri, 12 Apr 2019 20:06:53 +0000 (22:06 +0200)
Instead of using the connection context to make the difference between a
frontend connection and a backend connection, we now rely on the function
conn_is_back().

src/mux_h1.c
src/mux_h2.c

index 4dcbcafcf9411068b5daf4859424667d9dd2df61..a40ef3f4ae1603c28d0b9936733f7c4bf8a3e5d7 100644 (file)
@@ -287,33 +287,34 @@ static struct h1s *h1s_create(struct h1c *h1c, struct conn_stream *cs, struct se
        if (!conn_is_back(h1c->conn)) {
                if (h1c->px->options2 & PR_O2_REQBUG_OK)
                        h1s->req.err_pos = -1;
+
+               /* For frontend connections we should always have a session */
+               if (!sess)
+                       sess = h1c->conn->owner;
+
+               h1s->csinfo.create_date = sess->accept_date;
+               h1s->csinfo.tv_create   = sess->tv_accept;
+               h1s->csinfo.t_handshake = sess->t_handshake;
+               h1s->csinfo.t_idle      = -1;
        }
        else {
                if (h1c->px->options2 & PR_O2_RSPBUG_OK)
                        h1s->res.err_pos = -1;
-       }
 
-       /* If a conn_stream already exists, attach it to this H1S. Otherwise we
-        * create a new one.
-        */
-       if (cs) {
                h1s->csinfo.create_date = date;
                h1s->csinfo.tv_create   = now;
                h1s->csinfo.t_handshake = 0;
                h1s->csinfo.t_idle      = -1;
+       }
 
+       /* If a conn_stream already exists, attach it to this H1S. Otherwise we
+        * create a new one.
+        */
+       if (cs) {
                cs->ctx = h1s;
                h1s->cs = cs;
        }
        else {
-               /* For frontend connections we should always have a session */
-               sess = h1c->conn->owner;
-
-               h1s->csinfo.create_date = sess->accept_date;
-               h1s->csinfo.tv_create   = sess->tv_accept;
-               h1s->csinfo.t_handshake = sess->t_handshake;
-               h1s->csinfo.t_idle      = -1;
-
                cs = h1s_new_cs(h1s);
                if (!cs)
                        goto fail;
@@ -384,7 +385,7 @@ static int h1_init(struct connection *conn, struct proxy *proxy, struct session
        h1c->wait_event.task->context = h1c;
        h1c->wait_event.events   = 0;
 
-       if (conn->ctx) {
+       if (conn_is_back(conn)) {
                h1c->shut_timeout = h1c->timeout = proxy->timeout.server;
                if (tick_isset(proxy->timeout.serverfin))
                        h1c->shut_timeout = proxy->timeout.serverfin;
index 3e501502942a16e728146e1e80127bf1bc00eb36..5448ea820a8ba3bfcef732f9763ea71eb07f92e5 100644 (file)
@@ -484,7 +484,7 @@ static int h2_init(struct connection *conn, struct proxy *prx, struct session *s
        if (!h2c)
                goto fail_no_h2c;
 
-       if (conn->ctx) {
+       if (conn_is_back(conn)) {
                h2c->flags = H2_CF_IS_BACK;
                h2c->shut_timeout = h2c->timeout = prx->timeout.server;
                if (tick_isset(prx->timeout.serverfin))