Latest update - 9010
This commit is contained in:
@@ -274,7 +274,7 @@ ngx_handle_read_event(ngx_event_t *rev, ngx_uint_t flags)
|
||||
c = rev->data;
|
||||
|
||||
if (c->quic) {
|
||||
return ngx_quic_handle_read_event(rev, flags);
|
||||
return NGX_OK;
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -353,7 +353,7 @@ ngx_handle_write_event(ngx_event_t *wev, size_t lowat)
|
||||
|
||||
#if (NGX_QUIC)
|
||||
if (c->quic) {
|
||||
return ngx_quic_handle_write_event(wev, lowat);
|
||||
return NGX_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -123,8 +123,6 @@ void ngx_quic_shutdown_connection(ngx_connection_t *c, ngx_uint_t err,
|
||||
ngx_int_t ngx_quic_reset_stream(ngx_connection_t *c, ngx_uint_t err);
|
||||
ngx_int_t ngx_quic_shutdown_stream(ngx_connection_t *c, int how);
|
||||
void ngx_quic_cancelable_stream(ngx_connection_t *c);
|
||||
ngx_int_t ngx_quic_handle_read_event(ngx_event_t *rev, ngx_uint_t flags);
|
||||
ngx_int_t ngx_quic_handle_write_event(ngx_event_t *wev, size_t lowat);
|
||||
ngx_int_t ngx_quic_get_packet_dcid(ngx_log_t *log, u_char *data, size_t len,
|
||||
ngx_str_t *dcid);
|
||||
ngx_int_t ngx_quic_derive_key(ngx_log_t *log, const char *label,
|
||||
|
||||
@@ -203,6 +203,9 @@ ngx_quic_close_streams(ngx_connection_t *c, ngx_quic_connection_t *qc)
|
||||
continue;
|
||||
}
|
||||
|
||||
sc->read->error = 1;
|
||||
sc->write->error = 1;
|
||||
|
||||
ngx_quic_set_event(sc->read);
|
||||
ngx_quic_set_event(sc->write);
|
||||
|
||||
@@ -245,6 +248,10 @@ ngx_quic_do_reset_stream(ngx_quic_stream_t *qs, ngx_uint_t err)
|
||||
qs->send_state = NGX_QUIC_STREAM_SEND_RESET_SENT;
|
||||
qs->send_final_size = qs->send_offset;
|
||||
|
||||
if (qs->connection) {
|
||||
qs->connection->write->error = 1;
|
||||
}
|
||||
|
||||
pc = qs->parent;
|
||||
qc = ngx_quic_get_connection(pc);
|
||||
|
||||
@@ -682,6 +689,7 @@ ngx_quic_create_stream(ngx_connection_t *c, uint64_t id)
|
||||
sc->local_sockaddr = c->local_sockaddr;
|
||||
sc->local_socklen = c->local_socklen;
|
||||
sc->number = ngx_atomic_fetch_add(ngx_connection_counter, 1);
|
||||
sc->start_time = c->start_time;
|
||||
sc->tcp_nodelay = NGX_TCP_NODELAY_DISABLED;
|
||||
|
||||
sc->recv = ngx_quic_stream_recv;
|
||||
@@ -699,9 +707,16 @@ ngx_quic_create_stream(ngx_connection_t *c, uint64_t id)
|
||||
if ((id & NGX_QUIC_STREAM_UNIDIRECTIONAL) == 0
|
||||
|| (id & NGX_QUIC_STREAM_SERVER_INITIATED))
|
||||
{
|
||||
sc->write->active = 1;
|
||||
sc->write->ready = 1;
|
||||
}
|
||||
|
||||
if ((id & NGX_QUIC_STREAM_UNIDIRECTIONAL) == 0
|
||||
|| (id & NGX_QUIC_STREAM_SERVER_INITIATED) == 0)
|
||||
{
|
||||
sc->read->active = 1;
|
||||
}
|
||||
|
||||
if (id & NGX_QUIC_STREAM_UNIDIRECTIONAL) {
|
||||
if (id & NGX_QUIC_STREAM_SERVER_INITIATED) {
|
||||
qs->send_max_data = qc->ctp.initial_max_stream_data_uni;
|
||||
@@ -797,7 +812,6 @@ ngx_quic_stream_recv(ngx_connection_t *c, u_char *buf, size_t size)
|
||||
|| qs->recv_state == NGX_QUIC_STREAM_RECV_RESET_READ)
|
||||
{
|
||||
qs->recv_state = NGX_QUIC_STREAM_RECV_RESET_READ;
|
||||
rev->error = 1;
|
||||
return NGX_ERROR;
|
||||
}
|
||||
|
||||
@@ -1375,6 +1389,7 @@ ngx_int_t
|
||||
ngx_quic_handle_reset_stream_frame(ngx_connection_t *c,
|
||||
ngx_quic_header_t *pkt, ngx_quic_reset_stream_frame_t *f)
|
||||
{
|
||||
ngx_event_t *rev;
|
||||
ngx_quic_stream_t *qs;
|
||||
ngx_quic_connection_t *qc;
|
||||
|
||||
@@ -1431,7 +1446,10 @@ ngx_quic_handle_reset_stream_frame(ngx_connection_t *c,
|
||||
return ngx_quic_close_stream(qs);
|
||||
}
|
||||
|
||||
ngx_quic_set_event(qs->connection->read);
|
||||
rev = qs->connection->read;
|
||||
rev->error = 1;
|
||||
|
||||
ngx_quic_set_event(rev);
|
||||
|
||||
return NGX_OK;
|
||||
}
|
||||
@@ -1745,31 +1763,3 @@ ngx_quic_set_event(ngx_event_t *ev)
|
||||
ngx_post_event(ev, &ngx_posted_events);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ngx_int_t
|
||||
ngx_quic_handle_read_event(ngx_event_t *rev, ngx_uint_t flags)
|
||||
{
|
||||
if (!rev->active && !rev->ready) {
|
||||
rev->active = 1;
|
||||
|
||||
} else if (rev->active && (rev->ready || (flags & NGX_CLOSE_EVENT))) {
|
||||
rev->active = 0;
|
||||
}
|
||||
|
||||
return NGX_OK;
|
||||
}
|
||||
|
||||
|
||||
ngx_int_t
|
||||
ngx_quic_handle_write_event(ngx_event_t *wev, size_t lowat)
|
||||
{
|
||||
if (!wev->active && !wev->ready) {
|
||||
wev->active = 1;
|
||||
|
||||
} else if (wev->active && wev->ready) {
|
||||
wev->active = 0;
|
||||
}
|
||||
|
||||
return NGX_OK;
|
||||
}
|
||||
@@ -165,7 +165,6 @@ ngx_http_v3_init_request_stream(ngx_connection_t *c)
|
||||
{
|
||||
uint64_t n;
|
||||
ngx_event_t *rev;
|
||||
ngx_connection_t *pc;
|
||||
ngx_pool_cleanup_t *cln;
|
||||
ngx_http_connection_t *hc;
|
||||
ngx_http_v3_session_t *h3c;
|
||||
@@ -199,12 +198,10 @@ ngx_http_v3_init_request_stream(ngx_connection_t *c)
|
||||
return;
|
||||
}
|
||||
|
||||
pc = c->quic->parent;
|
||||
|
||||
h3c->next_request_id = c->quic->id + 0x04;
|
||||
|
||||
if (n + 1 == clcf->keepalive_requests
|
||||
|| ngx_current_msec - pc->start_time > clcf->keepalive_time)
|
||||
|| ngx_current_msec - c->start_time > clcf->keepalive_time)
|
||||
{
|
||||
h3c->goaway = 1;
|
||||
|
||||
@@ -554,10 +551,16 @@ ngx_http_v3_process_request(ngx_event_t *rev)
|
||||
|
||||
if (rc == NGX_BUSY) {
|
||||
if (rev->error) {
|
||||
ngx_http_close_request(r, NGX_HTTP_CLOSE);
|
||||
ngx_http_finalize_request(r, NGX_HTTP_BAD_REQUEST);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!rev->timer_set) {
|
||||
cscf = ngx_http_get_module_srv_conf(r,
|
||||
ngx_http_core_module);
|
||||
ngx_add_timer(rev, cscf->client_header_timeout);
|
||||
}
|
||||
|
||||
if (ngx_handle_read_event(rev, 0) != NGX_OK) {
|
||||
ngx_http_close_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user