]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: stream-int: split si_prepare_embedded into si_prepare_none and si_prepare_applet
authorWilly Tarreau <w@1wt.eu>
Sun, 29 Sep 2013 15:19:56 +0000 (17:19 +0200)
committerWilly Tarreau <w@1wt.eu>
Mon, 9 Dec 2013 14:40:22 +0000 (15:40 +0100)
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
src/session.c
src/stream_interface.c

index bb0c16d4154e7189d3671d642db4f412a31223ce..516b11e8a76562d79c50a0a4324f1ffc13870d49 100644 (file)
@@ -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 */
index 90bf3de7b22103009d9b75c9d005ecc78f30f4cb..0f626cddf5e2e9a62110ce8a5409dbf333cc9236 100644 (file)
@@ -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;
 
index a38f53adfbd534640679790276a23622a9df2845..7faf85f1602d188cc36bd8c7fb3e7e8b5125eb10 100644 (file)
@@ -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;