]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: sink: add some comments about sft->appctx usage in applet handlers
authorAurelien DARRAGON <adarragon@haproxy.com>
Wed, 24 Jul 2024 15:42:31 +0000 (17:42 +0200)
committerAurelien DARRAGON <adarragon@haproxy.com>
Wed, 24 Jul 2024 15:58:47 +0000 (17:58 +0200)
There seem to be an ambiguity in the code where sft->appctx would differ
from the appctx that was assigned to it upon appctx creation.

In practise, it doesn't seem this could be happening. Adding a few notes
to come back to this later and try to see if we can remove this
ambiguity.

src/sink.c

index 05ed71807a49062c8631fc0837e259f4e4ec686f..18c519a7d313472ebbd53f17c9f9fe60dbb0d95e 100644 (file)
@@ -375,6 +375,7 @@ static void _sink_forward_io_handler(struct appctx *appctx,
 
        HA_SPIN_LOCK(SFT_LOCK, &sft->lock);
        if (appctx != sft->appctx) {
+               /* FIXME: is this even supposed to happen? */
                HA_SPIN_UNLOCK(SFT_LOCK, &sft->lock);
                goto close;
        }
@@ -470,6 +471,8 @@ static int sink_forward_session_init(struct appctx *appctx)
        s->uniq_id = 0;
 
        applet_expect_no_data(appctx);
+
+       /* FIXME: redundant? was already assigned in process_sink_forward() */
        sft->appctx = appctx;
 
        HA_SPIN_UNLOCK(SFT_LOCK, &sft->lock);
@@ -493,6 +496,7 @@ static void sink_forward_session_release(struct appctx *appctx)
        HA_SPIN_LOCK(SFT_LOCK, &sft->lock);
        if (sft->appctx == appctx)
                __sink_forward_session_deinit(sft);
+       /* FIXME: is 'sft->appctx != appctx' even supposed to happen? */
        HA_SPIN_UNLOCK(SFT_LOCK, &sft->lock);
 }