]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MEDIUM: channel: add a new flag "CF_ISRESP" for the response channel
authorWilly Tarreau <w@1wt.eu>
Fri, 28 Nov 2014 13:17:09 +0000 (14:17 +0100)
committerWilly Tarreau <w@1wt.eu>
Wed, 11 Mar 2015 19:41:47 +0000 (20:41 +0100)
This flag designates the response channel. This will be used to know
what channel we're seeing and finding our way back to the session.

include/types/channel.h
src/hlua.c
src/peers.c
src/session.c

index 7b4afc83c9ee3ea29f38d06d50c8770206208bde..6f52372a415b96fc4677b48a03d4f4afc9b33323 100644 (file)
 #define CF_NEVER_WAIT     0x08000000  /* never wait for sending data (permanent) */
 
 #define CF_WAKE_ONCE      0x10000000  /* pretend there is activity on this channel (one-shoot) */
-/* unused: 0x20000000, 0x40000000, 0x80000000 */
+/* unused: 0x20000000, 0x40000000 */
+#define CF_ISRESP         0x80000000  /* 0 = request channel, 1 = response channel */
 
 /* Masks which define input events for stream analysers */
 #define CF_MASK_ANALYSER  (CF_READ_ATTACHED|CF_READ_ACTIVITY|CF_READ_TIMEOUT|CF_ANA_TIMEOUT|CF_WRITE_ACTIVITY|CF_WAKE_ONCE)
index 570c9b4b0e98eae55b15ec2b770c3442f97886e1..aa6f9954e201f5943bf3081d45c725683aeed877 100644 (file)
@@ -1908,6 +1908,7 @@ __LJMP static int hlua_socket_new(lua_State *L)
         */
        channel_init(&socket->s->req);
        channel_init(&socket->s->res);
+       socket->s->res.flags |= CF_ISRESP;
 
        socket->s->req.prod = &socket->s->si[0];
        socket->s->req.cons = &socket->s->si[1];
index 805b8d089f7e30cd3bcc5d7c85f495688c7695fd..708c0196ca2c5d78a7eebcddc3bb08fe5f0f2e73 100644 (file)
@@ -1256,6 +1256,8 @@ static struct session *peer_session_create(struct peer *peer, struct peer_sessio
        s->req.wto = s->be->timeout.server;
 
        channel_init(&s->res);
+       s->res.flags |= CF_ISRESP;
+
        s->res.prod = &s->si[1];
        s->res.cons = &s->si[0];
 
index a924e8cab0031b73341299023a056e611d40503f..4825cb3c1a77ba0d3d9d7f6b070ca39a84ea9d33 100644 (file)
@@ -502,6 +502,8 @@ int session_complete(struct session *s)
        s->req.analyse_exp = TICK_ETERNITY;
 
        channel_init(&s->res);
+       s->res.flags |= CF_ISRESP;
+
        s->res.prod = &s->si[1];
        s->res.cons = &s->si[0];
        s->res.analysers = 0;