From f9aaeacbf983b63696eb2dc0be63bdac2a0199bf Mon Sep 17 00:00:00 2001 From: sashan Date: Fri, 21 Feb 2025 02:04:03 +0100 Subject: [PATCH] Tserver must keep fake time ticking to complete a handshake Reviewed-by: Tim Hudson Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/26801) --- test/quic_tserver_test.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/test/quic_tserver_test.c b/test/quic_tserver_test.c index 0b91e2f5244..0edd74bbcbf 100644 --- a/test/quic_tserver_test.c +++ b/test/quic_tserver_test.c @@ -211,8 +211,21 @@ static int do_test(int use_thread_assist, int use_fake_time, int use_inject) if (!TEST_true(ret == 1 || is_want(c_ssl, ret))) goto err; - if (ret == 1) + if (ret == 1) { c_connected = 1; + } else { + /* + * keep timer ticking to keep handshake running. + * The timer is important for calculation of ping deadline. + * If things stall for whatever reason we at least send + * ACK eliciting ping to let peer know we are here ready + * to hear back. + */ + if (!TEST_true(CRYPTO_THREAD_write_lock(fake_time_lock))) + goto err; + fake_time = ossl_time_add(fake_time, ossl_ms2time(100)); + CRYPTO_THREAD_unlock(fake_time_lock); + } } if (c_connected && !c_write_done) { -- 2.47.2