Mercurial > hg > nginx
comparison src/event/ngx_event_quic.c @ 8483:2da9c4fddd44 quic
QUIC: eliminated connection handler argument in ngx_quic_run().
Now c->listening->handler() is called instead.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Tue, 21 Jul 2020 23:08:23 +0300 |
parents | 893b3313f53c |
children | d0ac4449a07f |
comparison
equal
deleted
inserted
replaced
8482:893b3313f53c | 8483:2da9c4fddd44 |
---|---|
34 | 34 |
35 | 35 |
36 typedef struct { | 36 typedef struct { |
37 ngx_rbtree_t tree; | 37 ngx_rbtree_t tree; |
38 ngx_rbtree_node_t sentinel; | 38 ngx_rbtree_node_t sentinel; |
39 ngx_connection_handler_pt handler; | |
40 | 39 |
41 ngx_uint_t id_counter; | 40 ngx_uint_t id_counter; |
42 | 41 |
43 uint64_t received; | 42 uint64_t received; |
44 uint64_t sent; | 43 uint64_t sent; |
160 static int ngx_quic_send_alert(ngx_ssl_conn_t *ssl_conn, | 159 static int ngx_quic_send_alert(ngx_ssl_conn_t *ssl_conn, |
161 enum ssl_encryption_level_t level, uint8_t alert); | 160 enum ssl_encryption_level_t level, uint8_t alert); |
162 | 161 |
163 | 162 |
164 static ngx_int_t ngx_quic_new_connection(ngx_connection_t *c, ngx_ssl_t *ssl, | 163 static ngx_int_t ngx_quic_new_connection(ngx_connection_t *c, ngx_ssl_t *ssl, |
165 ngx_quic_conf_t *conf, ngx_quic_header_t *pkt, | 164 ngx_quic_conf_t *conf, ngx_quic_header_t *pkt); |
166 ngx_connection_handler_pt handler); | |
167 static ngx_int_t ngx_quic_new_dcid(ngx_connection_t *c, ngx_str_t *odcid); | 165 static ngx_int_t ngx_quic_new_dcid(ngx_connection_t *c, ngx_str_t *odcid); |
168 static ngx_int_t ngx_quic_retry(ngx_connection_t *c); | 166 static ngx_int_t ngx_quic_retry(ngx_connection_t *c); |
169 static ngx_int_t ngx_quic_new_token(ngx_connection_t *c, ngx_str_t *token); | 167 static ngx_int_t ngx_quic_new_token(ngx_connection_t *c, ngx_str_t *token); |
170 static ngx_int_t ngx_quic_validate_token(ngx_connection_t *c, | 168 static ngx_int_t ngx_quic_validate_token(ngx_connection_t *c, |
171 ngx_quic_header_t *pkt); | 169 ngx_quic_header_t *pkt); |
585 return 1; | 583 return 1; |
586 } | 584 } |
587 | 585 |
588 | 586 |
589 void | 587 void |
590 ngx_quic_run(ngx_connection_t *c, ngx_ssl_t *ssl, ngx_quic_conf_t *conf, | 588 ngx_quic_run(ngx_connection_t *c, ngx_ssl_t *ssl, ngx_quic_conf_t *conf) |
591 ngx_connection_handler_pt handler) | |
592 { | 589 { |
593 ngx_buf_t *b; | 590 ngx_buf_t *b; |
594 ngx_quic_header_t pkt; | 591 ngx_quic_header_t pkt; |
595 | 592 |
596 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, 0, "quic run"); | 593 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, 0, "quic run"); |
604 pkt.log = c->log; | 601 pkt.log = c->log; |
605 pkt.raw = b; | 602 pkt.raw = b; |
606 pkt.data = b->start; | 603 pkt.data = b->start; |
607 pkt.len = b->last - b->start; | 604 pkt.len = b->last - b->start; |
608 | 605 |
609 if (ngx_quic_new_connection(c, ssl, conf, &pkt, handler) != NGX_OK) { | 606 if (ngx_quic_new_connection(c, ssl, conf, &pkt) != NGX_OK) { |
610 ngx_quic_close_connection(c, NGX_ERROR); | 607 ngx_quic_close_connection(c, NGX_ERROR); |
611 return; | 608 return; |
612 } | 609 } |
613 | 610 |
614 ngx_add_timer(c->read, c->quic->in_retry ? NGX_QUIC_RETRY_TIMEOUT | 611 ngx_add_timer(c->read, c->quic->in_retry ? NGX_QUIC_RETRY_TIMEOUT |
620 } | 617 } |
621 | 618 |
622 | 619 |
623 static ngx_int_t | 620 static ngx_int_t |
624 ngx_quic_new_connection(ngx_connection_t *c, ngx_ssl_t *ssl, | 621 ngx_quic_new_connection(ngx_connection_t *c, ngx_ssl_t *ssl, |
625 ngx_quic_conf_t *conf, ngx_quic_header_t *pkt, | 622 ngx_quic_conf_t *conf, ngx_quic_header_t *pkt) |
626 ngx_connection_handler_pt handler) | |
627 { | 623 { |
628 ngx_int_t rc; | 624 ngx_int_t rc; |
629 ngx_uint_t i; | 625 ngx_uint_t i; |
630 ngx_quic_tp_t *ctp; | 626 ngx_quic_tp_t *ctp; |
631 ngx_quic_secrets_t *keys; | 627 ngx_quic_secrets_t *keys; |
706 | 702 |
707 c->quic = qc; | 703 c->quic = qc; |
708 qc->ssl = ssl; | 704 qc->ssl = ssl; |
709 qc->conf = conf; | 705 qc->conf = conf; |
710 qc->tp = conf->tp; | 706 qc->tp = conf->tp; |
711 qc->streams.handler = handler; | |
712 | 707 |
713 ctp = &qc->ctp; | 708 ctp = &qc->ctp; |
714 ctp->max_udp_payload_size = ngx_quic_max_udp_payload(c); | 709 ctp->max_udp_payload_size = ngx_quic_max_udp_payload(c); |
715 ctp->ack_delay_exponent = NGX_QUIC_DEFAULT_ACK_DELAY_EXPONENT; | 710 ctp->ack_delay_exponent = NGX_QUIC_DEFAULT_ACK_DELAY_EXPONENT; |
716 ctp->max_ack_delay = NGX_QUIC_DEFAULT_MAX_ACK_DELAY; | 711 ctp->max_ack_delay = NGX_QUIC_DEFAULT_MAX_ACK_DELAY; |
2947 | 2942 |
2948 if ((f->stream_id & NGX_QUIC_STREAM_UNIDIRECTIONAL) == 0) { | 2943 if ((f->stream_id & NGX_QUIC_STREAM_UNIDIRECTIONAL) == 0) { |
2949 ngx_quic_handle_max_streams(c); | 2944 ngx_quic_handle_max_streams(c); |
2950 } | 2945 } |
2951 | 2946 |
2952 qc->streams.handler(sn->c); | 2947 sn->c->listening->handler(sn->c); |
2953 | 2948 |
2954 if (f->offset == 0) { | 2949 if (f->offset == 0) { |
2955 return NGX_OK; | 2950 return NGX_OK; |
2956 } | 2951 } |
2957 | 2952 |