Commit 75f59968b8 for openssl.org

commit 75f59968b838dabc3ff441ae2841c10e0df64b2b
Author: Matt Caswell <matt@openssl.foundation>
Date:   Wed Jun 17 11:18:12 2026 +0100

    Fix intermittent failure in check_pc_flood radix test

    check_flood_stats read the path challenge/response counters immediately
    after the client's write returned, but the flood is delivered over a
    real socket and processed by the connection's assist thread
    asynchronously. Spin until the counters reach their expected values,
    the same way check_rejected already does, instead of failing on the
    first observation.

    Observed failure:
    https://github.com/openssl/openssl/actions/runs/27669771673/job/81831310551?pr=31538

    Assisted-by: Claude:claude-sonnet-4-6

    Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
    Reviewed-by: Milan Broz <mbroz@openssl.org>
    MergeDate: Thu Jun 18 13:07:27 2026
    (Merged from https://github.com/openssl/openssl/pull/31561)

diff --git a/test/radix/quic_tests.c b/test/radix/quic_tests.c
index a840c02ee8..ed2685d14c 100644
--- a/test/radix/quic_tests.c
+++ b/test/radix/quic_tests.c
@@ -596,6 +596,14 @@ DEF_FUNC(check_flood_stats)
     path_challenge_count = ossl_quic_channel_get_path_challenge_count(ch);
     path_response_count = ossl_quic_channel_get_path_response_count(ch);

+    /*
+     * The flood is delivered over a real socket and processed by the
+     * connection's assist thread asynchronously, so give it a chance to
+     * catch up rather than failing on the first observation.
+     */
+    if (path_challenge_count < 16 || path_response_count < 1)
+        F_SPIN_AGAIN();
+
     if (!TEST_uint64_t_eq(path_challenge_count, 16))
         goto err;
     if (!TEST_uint64_t_eq(path_response_count, 1))