From: sashan Date: Fri, 21 Feb 2025 01:04:03 +0000 (+0100) Subject: Tserver must keep fake time ticking to complete a handshake X-Git-Tag: openssl-3.5.0-alpha1~79 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f9aaeacbf983b63696eb2dc0be63bdac2a0199bf;p=thirdparty%2Fopenssl.git 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) --- 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) {