Compare commits
2
Commits
0e0fa9c04b
...
29c94f084c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
29c94f084c | ||
|
|
f9781a4b73 |
+1
-1
Submodule lib/boringssl updated: 97dd962a20...f8a10eeef9
+1
-1
Submodule lib/naxsi updated: a96f12ca91...9db61590d3
+1
-1
Submodule lib/nginx-module-vts updated: 46e431b57f...5b3812e756
@@ -274,7 +274,7 @@ ngx_handle_read_event(ngx_event_t *rev, ngx_uint_t flags)
|
|||||||
c = rev->data;
|
c = rev->data;
|
||||||
|
|
||||||
if (c->quic) {
|
if (c->quic) {
|
||||||
return ngx_quic_handle_read_event(rev, flags);
|
return NGX_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -353,7 +353,7 @@ ngx_handle_write_event(ngx_event_t *wev, size_t lowat)
|
|||||||
|
|
||||||
#if (NGX_QUIC)
|
#if (NGX_QUIC)
|
||||||
if (c->quic) {
|
if (c->quic) {
|
||||||
return ngx_quic_handle_write_event(wev, lowat);
|
return NGX_OK;
|
||||||
}
|
}
|
||||||
#endif
|
#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_reset_stream(ngx_connection_t *c, ngx_uint_t err);
|
||||||
ngx_int_t ngx_quic_shutdown_stream(ngx_connection_t *c, int how);
|
ngx_int_t ngx_quic_shutdown_stream(ngx_connection_t *c, int how);
|
||||||
void ngx_quic_cancelable_stream(ngx_connection_t *c);
|
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_int_t ngx_quic_get_packet_dcid(ngx_log_t *log, u_char *data, size_t len,
|
||||||
ngx_str_t *dcid);
|
ngx_str_t *dcid);
|
||||||
ngx_int_t ngx_quic_derive_key(ngx_log_t *log, const char *label,
|
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;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sc->read->error = 1;
|
||||||
|
sc->write->error = 1;
|
||||||
|
|
||||||
ngx_quic_set_event(sc->read);
|
ngx_quic_set_event(sc->read);
|
||||||
ngx_quic_set_event(sc->write);
|
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_state = NGX_QUIC_STREAM_SEND_RESET_SENT;
|
||||||
qs->send_final_size = qs->send_offset;
|
qs->send_final_size = qs->send_offset;
|
||||||
|
|
||||||
|
if (qs->connection) {
|
||||||
|
qs->connection->write->error = 1;
|
||||||
|
}
|
||||||
|
|
||||||
pc = qs->parent;
|
pc = qs->parent;
|
||||||
qc = ngx_quic_get_connection(pc);
|
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_sockaddr = c->local_sockaddr;
|
||||||
sc->local_socklen = c->local_socklen;
|
sc->local_socklen = c->local_socklen;
|
||||||
sc->number = ngx_atomic_fetch_add(ngx_connection_counter, 1);
|
sc->number = ngx_atomic_fetch_add(ngx_connection_counter, 1);
|
||||||
|
sc->start_time = c->start_time;
|
||||||
sc->tcp_nodelay = NGX_TCP_NODELAY_DISABLED;
|
sc->tcp_nodelay = NGX_TCP_NODELAY_DISABLED;
|
||||||
|
|
||||||
sc->recv = ngx_quic_stream_recv;
|
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
|
if ((id & NGX_QUIC_STREAM_UNIDIRECTIONAL) == 0
|
||||||
|| (id & NGX_QUIC_STREAM_SERVER_INITIATED))
|
|| (id & NGX_QUIC_STREAM_SERVER_INITIATED))
|
||||||
{
|
{
|
||||||
|
sc->write->active = 1;
|
||||||
sc->write->ready = 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_UNIDIRECTIONAL) {
|
||||||
if (id & NGX_QUIC_STREAM_SERVER_INITIATED) {
|
if (id & NGX_QUIC_STREAM_SERVER_INITIATED) {
|
||||||
qs->send_max_data = qc->ctp.initial_max_stream_data_uni;
|
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)
|
||||||
{
|
{
|
||||||
qs->recv_state = NGX_QUIC_STREAM_RECV_RESET_READ;
|
qs->recv_state = NGX_QUIC_STREAM_RECV_RESET_READ;
|
||||||
rev->error = 1;
|
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1375,6 +1389,7 @@ ngx_int_t
|
|||||||
ngx_quic_handle_reset_stream_frame(ngx_connection_t *c,
|
ngx_quic_handle_reset_stream_frame(ngx_connection_t *c,
|
||||||
ngx_quic_header_t *pkt, ngx_quic_reset_stream_frame_t *f)
|
ngx_quic_header_t *pkt, ngx_quic_reset_stream_frame_t *f)
|
||||||
{
|
{
|
||||||
|
ngx_event_t *rev;
|
||||||
ngx_quic_stream_t *qs;
|
ngx_quic_stream_t *qs;
|
||||||
ngx_quic_connection_t *qc;
|
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);
|
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;
|
return NGX_OK;
|
||||||
}
|
}
|
||||||
@@ -1745,31 +1763,3 @@ ngx_quic_set_event(ngx_event_t *ev)
|
|||||||
ngx_post_event(ev, &ngx_posted_events);
|
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;
|
uint64_t n;
|
||||||
ngx_event_t *rev;
|
ngx_event_t *rev;
|
||||||
ngx_connection_t *pc;
|
|
||||||
ngx_pool_cleanup_t *cln;
|
ngx_pool_cleanup_t *cln;
|
||||||
ngx_http_connection_t *hc;
|
ngx_http_connection_t *hc;
|
||||||
ngx_http_v3_session_t *h3c;
|
ngx_http_v3_session_t *h3c;
|
||||||
@@ -199,12 +198,10 @@ ngx_http_v3_init_request_stream(ngx_connection_t *c)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
pc = c->quic->parent;
|
|
||||||
|
|
||||||
h3c->next_request_id = c->quic->id + 0x04;
|
h3c->next_request_id = c->quic->id + 0x04;
|
||||||
|
|
||||||
if (n + 1 == clcf->keepalive_requests
|
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;
|
h3c->goaway = 1;
|
||||||
|
|
||||||
@@ -554,10 +551,16 @@ ngx_http_v3_process_request(ngx_event_t *rev)
|
|||||||
|
|
||||||
if (rc == NGX_BUSY) {
|
if (rc == NGX_BUSY) {
|
||||||
if (rev->error) {
|
if (rev->error) {
|
||||||
ngx_http_close_request(r, NGX_HTTP_CLOSE);
|
ngx_http_finalize_request(r, NGX_HTTP_BAD_REQUEST);
|
||||||
break;
|
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) {
|
if (ngx_handle_read_event(rev, 0) != NGX_OK) {
|
||||||
ngx_http_close_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
|
ngx_http_close_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user