From ef573c0f220aa95684007d3bf6979b012c91590c Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 28 Nov 2014 14:17:09 +0100 Subject: [PATCH] MEDIUM: channel: add a new flag "CF_ISRESP" for the response channel 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 | 3 ++- src/hlua.c | 1 + src/peers.c | 2 ++ src/session.c | 2 ++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/include/types/channel.h b/include/types/channel.h index 7b4afc83c..6f52372a4 100644 --- a/include/types/channel.h +++ b/include/types/channel.h @@ -117,7 +117,8 @@ #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) diff --git a/src/hlua.c b/src/hlua.c index 570c9b4b0..aa6f9954e 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -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]; diff --git a/src/peers.c b/src/peers.c index 805b8d089..708c0196c 100644 --- a/src/peers.c +++ b/src/peers.c @@ -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]; diff --git a/src/session.c b/src/session.c index a924e8cab..4825cb3c1 100644 --- a/src/session.c +++ b/src/session.c @@ -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; -- 2.47.3