details: https://hg.nginx.org/nginx/rev/3db945fda515 branches: changeset: 9164:3db945fda515 user: Vladimir Khomutov <v...@inspert.ru> date: Fri Sep 22 19:23:57 2023 +0400 description: QUIC: handle callback errors in compat.
The error may be triggered in add_handhshake_data() by incorrect transport parameter sent by client. The expected behaviour in this case is to close connection complaining about incorrect parameter. Currently the connection just times out. diffstat: src/event/quic/ngx_event_quic_openssl_compat.c | 14 ++++++++++++-- 1 files changed, 12 insertions(+), 2 deletions(-) diffs (35 lines): diff -r 32b5aaebcca5 -r 3db945fda515 src/event/quic/ngx_event_quic_openssl_compat.c --- a/src/event/quic/ngx_event_quic_openssl_compat.c Wed Sep 13 17:48:15 2023 +0400 +++ b/src/event/quic/ngx_event_quic_openssl_compat.c Fri Sep 22 19:23:57 2023 +0400 @@ -408,7 +408,9 @@ ngx_quic_compat_message_callback(int wri "quic compat tx %s len:%uz ", ngx_quic_level_name(level), len); - (void) com->method->add_handshake_data(ssl, level, buf, len); + if (com->method->add_handshake_data(ssl, level, buf, len) != 1) { + goto failed; + } break; @@ -420,11 +422,19 @@ ngx_quic_compat_message_callback(int wri "quic compat %s alert:%ui len:%uz ", ngx_quic_level_name(level), alert, len); - (void) com->method->send_alert(ssl, level, alert); + if (com->method->send_alert(ssl, level, alert) != 1) { + goto failed; + } } break; } + + return; + +failed: + + ngx_post_event(&qc->close, &ngx_posted_events); } _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-devel