From 0b2fb7f9a3e8f58749f219fd4025a274bd429305 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 28 Nov 2014 11:50:38 +0100 Subject: [PATCH] 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. --- include/proto/stream_interface.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h index aba94c753..cc79e6ddd 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