From: Willy Tarreau Date: Fri, 28 Nov 2014 10:50:38 +0000 (+0100) Subject: MAJOR: stream-int: only rely on SI_FL_ISBACK to find the requested channel X-Git-Tag: v1.6-dev1~27 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0b2fb7f9a3e8f58749f219fd4025a274bd429305;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h index aba94c753b..cc79e6ddda 100644 --- a/include/proto/stream_interface.h +++ b/include/proto/stream_interface.h @@ -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