]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
quic/stream: Handle IO error event initiated by dns layer
authorFrantisek Tobias <frantisek.tobias@nic.cz>
Wed, 15 Oct 2025 11:55:05 +0000 (13:55 +0200)
committerFrantisek Tobias <frantisek.tobias@nic.cz>
Wed, 7 Jan 2026 13:39:14 +0000 (14:39 +0100)
daemon/quic_stream.c

index 1581cc5f3c69fd453b599817f3b5e2b16bd2405f..484acfba01317be6d0bdde2c7ada30e530b87312 100644 (file)
@@ -3,6 +3,7 @@
  */
 
 #include "quic_common.h"
+#include "quic_conn.h"
 #include "session2.h"
 #include <ngtcp2/ngtcp2.h>
 #include "quic_stream.h"
@@ -250,12 +251,17 @@ static enum protolayer_event_cb_result pl_quic_stream_event_unwrap(
                enum protolayer_event_type event, void **baton,
                struct session2 *session, void *sess_data)
 {
-       if (event == PROTOLAYER_EVENT_CLOSE || event == PROTOLAYER_EVENT_FORCE_CLOSE) {
+       if (event == PROTOLAYER_EVENT_FORCE_CLOSE) {
+               struct pl_quic_stream_sess_data *stream = sess_data;
+               quic_event_close_connection(stream->conn_ref, session->transport.parent);
+               return PROTOLAYER_EVENT_CONSUME;
+       }
+       if (event == PROTOLAYER_EVENT_CLOSE) {
                pl_quic_stream_sess_deinit(session, sess_data);
                return PROTOLAYER_EVENT_CONSUME;
        }
 
-       return PROTOLAYER_EVENT_CONSUME;
+       return PROTOLAYER_EVENT_PROPAGATE;
 }
 
 __attribute__((constructor))