MAJOR: stream-int: only rely on SI_FL_ISBACK to find the requested channel

In order to plan removal of si->ib / si->ob, we now check the side of the
stream interface and find the session, then the requested channel. In
practice it's just an offset applied to the pointer based on the flag.
This commit is contained in:
Willy Tarreau 2014-11-28 11:50:38 +01:00
parent a5f5d8dc69
commit 0b2fb7f9a3

View File

@ -49,13 +49,19 @@ void stream_int_unregister_handler(struct stream_interface *si);
/* returns the channel which receives data from this stream interface (input channel) */
static inline struct channel *si_ic(struct stream_interface *si)
{
return si->ib;
if (si->flags & SI_FL_ISBACK)
return &LIST_ELEM(si, struct session *, si[1])->res;
else
return &LIST_ELEM(si, struct session *, si[0])->req;
}
/* returns the channel which feeds data to this stream interface (output channel) */
static inline struct channel *si_oc(struct stream_interface *si)
{
return si->ob;
if (si->flags & SI_FL_ISBACK)
return &LIST_ELEM(si, struct session *, si[1])->req;
else
return &LIST_ELEM(si, struct session *, si[0])->res;
}
/* Initializes all required fields for a new appctx. Note that it does the