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.
This commit is contained in:
Willy Tarreau 2014-11-28 14:17:09 +01:00
parent 73796535a9
commit ef573c0f22
4 changed files with 7 additions and 1 deletions

View File

@ -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)

View 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];

View 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];

View 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;