Mercurial > hg > nginx
view src/event/quic/ngx_event_quic_ack.h @ 9210:4ed4e1e7f115
QUIC: fixed stream cleanup (ticket #2586).
Stream connection cleanup handler ngx_quic_stream_cleanup_handler() calls
ngx_quic_shutdown_stream() after which it resets the pointer from quic stream
to the connection (sc->connection = NULL). Previously if this call failed,
sc->connection retained the old value, while the connection was freed by the
application code. This resulted later in a second attempt to close the freed
connection, which lead to allocator double free error.
The fix is to reset the sc->connection pointer in case of error.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Wed, 14 Feb 2024 15:55:37 +0400 |
parents | 4117aa7fa38e |
children |
line wrap: on
line source
/* * Copyright (C) Nginx, Inc. */ #ifndef _NGX_EVENT_QUIC_ACK_H_INCLUDED_ #define _NGX_EVENT_QUIC_ACK_H_INCLUDED_ #include <ngx_config.h> #include <ngx_core.h> ngx_int_t ngx_quic_handle_ack_frame(ngx_connection_t *c, ngx_quic_header_t *pkt, ngx_quic_frame_t *f); void ngx_quic_congestion_ack(ngx_connection_t *c, ngx_quic_frame_t *frame); void ngx_quic_resend_frames(ngx_connection_t *c, ngx_quic_send_ctx_t *ctx); void ngx_quic_set_lost_timer(ngx_connection_t *c); void ngx_quic_pto_handler(ngx_event_t *ev); ngx_msec_t ngx_quic_pto(ngx_connection_t *c, ngx_quic_send_ctx_t *ctx); ngx_int_t ngx_quic_ack_packet(ngx_connection_t *c, ngx_quic_header_t *pkt); ngx_int_t ngx_quic_generate_ack(ngx_connection_t *c, ngx_quic_send_ctx_t *ctx); #endif /* _NGX_EVENT_QUIC_ACK_H_INCLUDED_ */