From 372d6708fba12c1a7146b80b89d24da11a96c5fa Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 29 Sep 2013 17:19:56 +0200 Subject: [PATCH] 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. --- include/proto/stream_interface.h | 10 +++++++++- src/session.c | 3 +-- src/stream_interface.c | 3 +-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h index bb0c16d41..516b11e8a 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 90bf3de7b..0f626cddf 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 a38f53adf..7faf85f16 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;