mirror of
https://github.com/nginx/nginx.git
synced 2026-10-22 03:51:14 +00:00
QUIC: send RESET_STREAM in response to STOP_SENDING.
As per RFC 9000: An endpoint that receives a STOP_SENDING frame MUST send a RESET_STREAM frame if the stream is in the "Ready" or "Send" state. An endpoint SHOULD copy the error code from the STOP_SENDING frame to the RESET_STREAM frame it sends, but it can use any application error code.
This commit is contained in:
parent
22f2dc2a87
commit
010f974e44
1 changed files with 13 additions and 5 deletions
|
|
@ -1253,6 +1253,7 @@ ngx_int_t
|
|||
ngx_quic_handle_stop_sending_frame(ngx_connection_t *c,
|
||||
ngx_quic_header_t *pkt, ngx_quic_stop_sending_frame_t *f)
|
||||
{
|
||||
ngx_pool_t *pool;
|
||||
ngx_event_t *wev;
|
||||
ngx_connection_t *sc;
|
||||
ngx_quic_stream_t *qs;
|
||||
|
|
@ -1282,16 +1283,23 @@ ngx_quic_handle_stop_sending_frame(ngx_connection_t *c,
|
|||
|
||||
sc = qs->connection;
|
||||
|
||||
wev = sc->write;
|
||||
wev->error = 1;
|
||||
wev->ready = 1;
|
||||
if (ngx_quic_reset_stream(sc, f->error_code) != NGX_OK) {
|
||||
pool = sc->pool;
|
||||
|
||||
ngx_close_connection(sc);
|
||||
ngx_destroy_pool(pool);
|
||||
|
||||
return NGX_ERROR;
|
||||
}
|
||||
|
||||
return ngx_quic_init_stream(qs);
|
||||
}
|
||||
|
||||
if (ngx_quic_reset_stream(qs->connection, f->error_code) != NGX_OK) {
|
||||
return NGX_ERROR;
|
||||
}
|
||||
|
||||
wev = qs->connection->write;
|
||||
wev->error = 1;
|
||||
wev->ready = 1;
|
||||
|
||||
if (wev->active) {
|
||||
wev->handler(wev);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue