From: Willy Tarreau Date: Sun, 29 Sep 2013 15:19:56 +0000 (+0200) Subject: MINOR: stream-int: split si_prepare_embedded into si_prepare_none and si_prepare_applet X-Git-Tag: v1.5-dev20~118 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=372d6708fba12c1a7146b80b89d24da11a96c5fa;p=thirdparty%2Fhaproxy.git MINOR: stream-int: split si_prepare_embedded into si_prepare_none and si_prepare_applet si_prepare_embedded() was used both to attach an applet and to detach anything from a stream interface. Split it into si_prepare_none() to detach and si_prepare_applet() to attach an applet. si->conn->target is now assigned from within these two functions instead of their respective callers. --- diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h index bb0c16d415..516b11e8a7 100644 --- a/include/proto/stream_interface.h +++ b/include/proto/stream_interface.h @@ -51,6 +51,13 @@ static inline const struct protocol *si_ctrl(struct stream_interface *si) return si->conn->ctrl; } +static inline void si_prepare_none(struct stream_interface *si) +{ + si->ops = &si_embedded_ops; + conn_prepare(si->conn, NULL, NULL, NULL, si); + si->conn->target = NULL; +} + static inline void si_prepare_conn(struct stream_interface *si, const struct protocol *ctrl, const struct xprt_ops *xprt) { si->ops = &si_conn_ops; @@ -63,10 +70,11 @@ static inline void si_takeover_conn(struct stream_interface *si, const struct pr conn_assign(si->conn, &si_conn_cb, ctrl, xprt, si); } -static inline void si_prepare_embedded(struct stream_interface *si) +static inline void si_prepare_applet(struct stream_interface *si, struct si_applet *applet) { si->ops = &si_embedded_ops; conn_prepare(si->conn, NULL, NULL, NULL, si); + si->conn->target = &applet->obj_type; } /* Sends a shutr to the connection using the data layer */ diff --git a/src/session.c b/src/session.c index 90bf3de7b2..0f626cddf5 100644 --- a/src/session.c +++ b/src/session.c @@ -469,8 +469,7 @@ int session_complete(struct session *s) s->si[1].conn_retries = 0; /* used for logging too */ s->si[1].release = NULL; s->si[1].send_proxy_ofs = 0; - s->si[1].conn->target = NULL; - si_prepare_embedded(&s->si[1]); + si_prepare_none(&s->si[1]); s->si[1].exp = TICK_ETERNITY; s->si[1].flags = SI_FL_NONE; diff --git a/src/stream_interface.c b/src/stream_interface.c index a38f53adfb..7faf85f160 100644 --- a/src/stream_interface.c +++ b/src/stream_interface.c @@ -358,8 +358,7 @@ struct task *stream_int_register_handler(struct stream_interface *si, struct si_ { DPRINTF(stderr, "registering handler %p for si %p (was %p)\n", app, si, si->owner); - si_prepare_embedded(si); - si->conn->target = &app->obj_type; + si_prepare_applet(si, app); si->release = app->release; si->flags |= SI_FL_WAIT_DATA; return si->owner;