QUIC RXDP: Record STOP_SENDING/RESET_STREAM event AEC codes consistently
authorHugo Landau <hlandau@openssl.org>
Tue, 18 Apr 2023 18:30:56 +0000 (19:30 +0100)
committerHugo Landau <hlandau@openssl.org>
Fri, 12 May 2023 13:47:13 +0000 (14:47 +0100)
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765)

include/internal/quic_stream_map.h
ssl/quic/quic_rx_depack.c

index 51e175ffb8125c5acf82399288f42b541f40af16..152a21108dfdddff7fba2143f0423b1271d3d08d 100644 (file)
@@ -60,6 +60,18 @@ struct quic_stream_st {
      */
     uint64_t        reset_stream_aec;
 
+    /*
+     * Application Error Code (AEC) for incoming STOP_SENDING frame.
+     * This is only valid if peer_stop_sending is 1.
+     */
+    uint64_t        peer_stop_sending_aec;
+
+    /*
+     * Application Error Code (AEC) for incoming RESET_STREAM frame.
+     * This  is only valid if peer_reset_stream is 1.
+     */
+    uint64_t        peer_reset_stream_aec;
+
     /* Temporary value used by TXP. */
     uint64_t        txp_txfc_new_credit_consumed;
 
index 2bc4e146e8086c20dc71d244730264fd19888023..4b9805b01cac91802d27f0e51af841c736e532d8 100644 (file)
@@ -129,7 +129,9 @@ static int depack_do_frame_reset_stream(PACKET *pkt,
         return 0;
     }
 
-    stream->peer_reset_stream = 1;
+    stream->peer_reset_stream       = 1;
+    stream->peer_reset_stream_aec   = frame_data.app_error_code;
+
     ossl_quic_stream_map_update_state(&ch->qsm, stream);
     return 1;
 }
@@ -171,7 +173,8 @@ static int depack_do_frame_stop_sending(PACKET *pkt,
         return 0;
     }
 
-    stream->peer_stop_sending = 1;
+    stream->peer_stop_sending       = 1;
+    stream->peer_stop_sending_aec   = frame_data.app_error_code;
 
     /*
      * RFC 9000 s. 3.5: Receiving a STOP_SENDING frame means we must respond in