From: Matt Caswell Date: Fri, 20 Oct 2023 11:33:25 +0000 (+0100) Subject: When requeueing deferred URXEs retain the order X-Git-Tag: openssl-3.2.0-beta1~25 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=86e11b1e78ad6937ef32d64ca34013306c9abc28;p=thirdparty%2Fopenssl.git When requeueing deferred URXEs retain the order If a URXE cannot be processed yet then we add it to the urx_deferred list. Later, when they can be processed, we requeue them in the urx_pending list. We must not reverse the order when doing so. We want to process the URXEs in the order that they were received. Reviewed-by: Hugo Landau Reviewed-by: Paul Dale Reviewed-by: Todd Short Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/22452) --- diff --git a/ssl/quic/quic_record_rx.c b/ssl/quic/quic_record_rx.c index c75b4e93be0..4d0493baff6 100644 --- a/ssl/quic/quic_record_rx.c +++ b/ssl/quic/quic_record_rx.c @@ -280,7 +280,7 @@ static void qrx_requeue_deferred(OSSL_QRX *qrx) while ((e = ossl_list_urxe_head(&qrx->urx_deferred)) != NULL) { ossl_list_urxe_remove(&qrx->urx_deferred, e); - ossl_list_urxe_insert_head(&qrx->urx_pending, e); + ossl_list_urxe_insert_tail(&qrx->urx_pending, e); } } diff --git a/test/recipes/75-test_quicapi_data/ssltraceref-zlib.txt b/test/recipes/75-test_quicapi_data/ssltraceref-zlib.txt index e8bdee624fb..68d3fd86ecf 100644 --- a/test/recipes/75-test_quicapi_data/ssltraceref-zlib.txt +++ b/test/recipes/75-test_quicapi_data/ssltraceref-zlib.txt @@ -127,21 +127,21 @@ Received Packet Version: 0x00000001 Destination Conn Id: Source Conn Id: 0x???????????????? - Payload length: 213 - Packet Number: 0x00000001 + Payload length: 1042 + Packet Number: 0x00000000 Received Packet Packet Type: Handshake Version: 0x00000001 Destination Conn Id: Source Conn Id: 0x???????????????? - Payload length: 1042 - Packet Number: 0x00000000 -Received Frame: Crypto - Offset: 1022 - Len: 192 + Payload length: 213 + Packet Number: 0x00000001 Received Frame: Crypto Offset: 0 Len: 1022 +Received Frame: Crypto + Offset: 1022 + Len: 192 Received TLS Record Header: Version = TLS 1.2 (0x303) diff --git a/test/recipes/75-test_quicapi_data/ssltraceref.txt b/test/recipes/75-test_quicapi_data/ssltraceref.txt index 6b64d0652e9..6a6828ec01e 100644 --- a/test/recipes/75-test_quicapi_data/ssltraceref.txt +++ b/test/recipes/75-test_quicapi_data/ssltraceref.txt @@ -125,21 +125,21 @@ Received Packet Version: 0x00000001 Destination Conn Id: Source Conn Id: 0x???????????????? - Payload length: 213 - Packet Number: 0x00000001 + Payload length: 1042 + Packet Number: 0x00000000 Received Packet Packet Type: Handshake Version: 0x00000001 Destination Conn Id: Source Conn Id: 0x???????????????? - Payload length: 1042 - Packet Number: 0x00000000 -Received Frame: Crypto - Offset: 1022 - Len: 192 + Payload length: 213 + Packet Number: 0x00000001 Received Frame: Crypto Offset: 0 Len: 1022 +Received Frame: Crypto + Offset: 1022 + Len: 192 Received TLS Record Header: Version = TLS 1.2 (0x303)