From: Arran Cudbard-Bell Date: Fri, 24 Apr 2026 16:15:14 +0000 (-0400) Subject: rlm_kafka: continue the wake drain loop after a cancelled pctx X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=d36d0bcd563054ebbc21bfe0141a5212149ec705;p=thirdparty%2Ffreeradius-server.git rlm_kafka: continue the wake drain loop after a cancelled pctx _kafka_wake loops over the atomic ring draining pctx the bg cb pushed, checks pctx->request, and if the worker-side cancel handler has already NULLed it, frees the pctx without marking a request runnable. It was using `return` on that branch (copy-pasted from the one-shot kafka_delivery_notification()), which exits the whole drain loop as soon as the first cancelled entry comes up, leaving any subsequent live pctx stranded in the ring - their requests never get resumed and end up cancelled by max_request_time instead. Switch to `continue` so the rest of the ring still drains. --- diff --git a/src/modules/rlm_kafka/rlm_kafka.c b/src/modules/rlm_kafka/rlm_kafka.c index 1a8acb6249d..e9d7efe5c76 100644 --- a/src/modules/rlm_kafka/rlm_kafka.c +++ b/src/modules/rlm_kafka/rlm_kafka.c @@ -324,7 +324,7 @@ static void _kafka_wake(UNUSED fr_event_list_t *el, void *uctx) if (!request) { free(pctx); - return; + continue; } unlang_interpret_mark_runnable(request); }