Mercurial > hg > nginx-quic
annotate src/event/quic/ngx_event_quic_connection.h @ 9012:03897c45798e quic
QUIC: defer setting the active flag for client stream events.
Specifically, now it is kept unset until streams are initialized.
Notably, this unbreaks OCSP with client certificates after 35e27117b593.
Previously, the read event could be posted prematurely via ngx_quic_set_event()
e.g., as part of handling a STREAM frame.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Wed, 18 Jan 2023 19:20:18 +0400 |
parents | c2f5d79cde64 |
children | 7da4791e0264 |
rev | line source |
---|---|
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
1 /* |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
2 * Copyright (C) Nginx, Inc. |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
3 */ |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
4 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
5 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
6 #ifndef _NGX_EVENT_QUIC_CONNECTION_H_INCLUDED_ |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
7 #define _NGX_EVENT_QUIC_CONNECTION_H_INCLUDED_ |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
8 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
9 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
10 #include <ngx_config.h> |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
11 #include <ngx_core.h> |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
12 #include <ngx_event.h> |
8407 | 13 |
8424
0bd1dd39a08b
QUIC: fixed build with NGX_QUIC_DEBUG_ALLOC enabled.
Vladimir Homutov <vl@nginx.com>
parents:
8423
diff
changeset
|
14 |
0bd1dd39a08b
QUIC: fixed build with NGX_QUIC_DEBUG_ALLOC enabled.
Vladimir Homutov <vl@nginx.com>
parents:
8423
diff
changeset
|
15 /* #define NGX_QUIC_DEBUG_PACKETS */ /* dump packet contents */ |
0bd1dd39a08b
QUIC: fixed build with NGX_QUIC_DEBUG_ALLOC enabled.
Vladimir Homutov <vl@nginx.com>
parents:
8423
diff
changeset
|
16 /* #define NGX_QUIC_DEBUG_FRAMES */ /* dump frames contents */ |
0bd1dd39a08b
QUIC: fixed build with NGX_QUIC_DEBUG_ALLOC enabled.
Vladimir Homutov <vl@nginx.com>
parents:
8423
diff
changeset
|
17 /* #define NGX_QUIC_DEBUG_ALLOC */ /* log frames and bufs alloc */ |
0bd1dd39a08b
QUIC: fixed build with NGX_QUIC_DEBUG_ALLOC enabled.
Vladimir Homutov <vl@nginx.com>
parents:
8423
diff
changeset
|
18 /* #define NGX_QUIC_DEBUG_CRYPTO */ |
0bd1dd39a08b
QUIC: fixed build with NGX_QUIC_DEBUG_ALLOC enabled.
Vladimir Homutov <vl@nginx.com>
parents:
8423
diff
changeset
|
19 |
8415
b4e6b7049984
QUIC: normalize header inclusion.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8414
diff
changeset
|
20 typedef struct ngx_quic_connection_s ngx_quic_connection_t; |
8423
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
21 typedef struct ngx_quic_server_id_s ngx_quic_server_id_t; |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
22 typedef struct ngx_quic_client_id_s ngx_quic_client_id_t; |
8415
b4e6b7049984
QUIC: normalize header inclusion.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8414
diff
changeset
|
23 typedef struct ngx_quic_send_ctx_s ngx_quic_send_ctx_t; |
8423
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
24 typedef struct ngx_quic_socket_s ngx_quic_socket_t; |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
25 typedef struct ngx_quic_path_s ngx_quic_path_t; |
8415
b4e6b7049984
QUIC: normalize header inclusion.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8414
diff
changeset
|
26 typedef struct ngx_quic_keys_s ngx_quic_keys_t; |
b4e6b7049984
QUIC: normalize header inclusion.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8414
diff
changeset
|
27 |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
28 #include <ngx_event_quic_transport.h> |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
29 #include <ngx_event_quic_protection.h> |
8409
660c4a2f95f3
QUIC: separate files for frames related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8408
diff
changeset
|
30 #include <ngx_event_quic_frames.h> |
8407 | 31 #include <ngx_event_quic_migration.h> |
8408
e0cb1e58ca13
QUIC: separate files for connection id related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8407
diff
changeset
|
32 #include <ngx_event_quic_connid.h> |
8410
41807e581de9
QUIC: separate files for stream related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8409
diff
changeset
|
33 #include <ngx_event_quic_streams.h> |
8413
46161c610919
QUIC: separate files for SSL library interfaces.
Vladimir Homutov <vl@nginx.com>
parents:
8412
diff
changeset
|
34 #include <ngx_event_quic_ssl.h> |
8412
e19723c40d28
QUIC: separate files for tokens related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8411
diff
changeset
|
35 #include <ngx_event_quic_tokens.h> |
8411
bc910a5ec737
QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8410
diff
changeset
|
36 #include <ngx_event_quic_ack.h> |
bc910a5ec737
QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8410
diff
changeset
|
37 #include <ngx_event_quic_output.h> |
8423
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
38 #include <ngx_event_quic_socket.h> |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
39 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
40 |
8498
4715f3e669f1
QUIC: updated specification references.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8493
diff
changeset
|
41 /* RFC 9002, 6.2.2. Handshakes and New Paths: kInitialRtt */ |
8407 | 42 #define NGX_QUIC_INITIAL_RTT 333 /* ms */ |
43 | |
8408
e0cb1e58ca13
QUIC: separate files for connection id related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8407
diff
changeset
|
44 #define NGX_QUIC_UNSET_PN (uint64_t) -1 |
8407 | 45 |
46 #define NGX_QUIC_SEND_CTX_LAST (NGX_QUIC_ENCRYPTION_LAST - 1) | |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
47 |
8387
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
48 /* 0-RTT and 1-RTT data exist in the same packet number space, |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
49 * so we have 3 packet number spaces: |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
50 * |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
51 * 0 - Initial |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
52 * 1 - Handshake |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
53 * 2 - 0-RTT and 1-RTT |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
54 */ |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
55 #define ngx_quic_get_send_ctx(qc, level) \ |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
56 ((level) == ssl_encryption_initial) ? &((qc)->send_ctx[0]) \ |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
57 : (((level) == ssl_encryption_handshake) ? &((qc)->send_ctx[1]) \ |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
58 : &((qc)->send_ctx[2])) |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
59 |
8407 | 60 #define ngx_quic_get_connection(c) \ |
8423
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
61 (((c)->udp) ? (((ngx_quic_socket_t *)((c)->udp))->quic) : NULL) |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
62 |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
63 #define ngx_quic_get_socket(c) ((ngx_quic_socket_t *)((c)->udp)) |
8407 | 64 |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
65 |
8423
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
66 struct ngx_quic_client_id_s { |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
67 ngx_queue_t queue; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
68 uint64_t seqnum; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
69 size_t len; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
70 u_char id[NGX_QUIC_CID_LEN_MAX]; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
71 u_char sr_token[NGX_QUIC_SR_TOKEN_LEN]; |
8797
1e2f4e9c8195
QUIC: reworked migration handling.
Vladimir Homutov <vl@nginx.com>
parents:
8763
diff
changeset
|
72 ngx_uint_t used; /* unsigned used:1; */ |
8423
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
73 }; |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
74 |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
75 |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
76 struct ngx_quic_server_id_s { |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
77 uint64_t seqnum; |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
78 size_t len; |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
79 u_char id[NGX_QUIC_CID_LEN_MAX]; |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
80 }; |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
81 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
82 |
8423
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
83 struct ngx_quic_path_s { |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
84 ngx_queue_t queue; |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
85 struct sockaddr *sockaddr; |
8797
1e2f4e9c8195
QUIC: reworked migration handling.
Vladimir Homutov <vl@nginx.com>
parents:
8763
diff
changeset
|
86 ngx_sockaddr_t sa; |
8423
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
87 socklen_t socklen; |
8797
1e2f4e9c8195
QUIC: reworked migration handling.
Vladimir Homutov <vl@nginx.com>
parents:
8763
diff
changeset
|
88 ngx_quic_client_id_t *cid; |
8423
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
89 ngx_msec_t expires; |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
90 ngx_uint_t tries; |
8797
1e2f4e9c8195
QUIC: reworked migration handling.
Vladimir Homutov <vl@nginx.com>
parents:
8763
diff
changeset
|
91 ngx_uint_t tag; |
8423
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
92 off_t sent; |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
93 off_t received; |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
94 u_char challenge1[8]; |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
95 u_char challenge2[8]; |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
96 uint64_t seqnum; |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
97 ngx_str_t addr_text; |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
98 u_char text[NGX_SOCKADDR_STRLEN]; |
8797
1e2f4e9c8195
QUIC: reworked migration handling.
Vladimir Homutov <vl@nginx.com>
parents:
8763
diff
changeset
|
99 unsigned validated:1; |
1e2f4e9c8195
QUIC: reworked migration handling.
Vladimir Homutov <vl@nginx.com>
parents:
8763
diff
changeset
|
100 unsigned validating:1; |
1e2f4e9c8195
QUIC: reworked migration handling.
Vladimir Homutov <vl@nginx.com>
parents:
8763
diff
changeset
|
101 unsigned limited:1; |
8423
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
102 }; |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
103 |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
104 |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
105 struct ngx_quic_socket_s { |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
106 ngx_udp_connection_t udp; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
107 ngx_quic_connection_t *quic; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
108 ngx_queue_t queue; |
8423
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
109 ngx_quic_server_id_t sid; |
8862
c2f5d79cde64
QUIC: separate UDP framework for QUIC.
Roman Arutyunyan <arut@nginx.com>
parents:
8856
diff
changeset
|
110 ngx_sockaddr_t sockaddr; |
c2f5d79cde64
QUIC: separate UDP framework for QUIC.
Roman Arutyunyan <arut@nginx.com>
parents:
8856
diff
changeset
|
111 socklen_t socklen; |
8797
1e2f4e9c8195
QUIC: reworked migration handling.
Vladimir Homutov <vl@nginx.com>
parents:
8763
diff
changeset
|
112 ngx_uint_t used; /* unsigned used:1; */ |
8423
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
113 }; |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
114 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
115 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
116 typedef struct { |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
117 ngx_rbtree_t tree; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
118 ngx_rbtree_node_t sentinel; |
8855 | 119 |
8552
fe919fd63b0b
QUIC: client certificate validation with OCSP.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8547
diff
changeset
|
120 ngx_queue_t uninitialized; |
8855 | 121 ngx_queue_t free; |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
122 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
123 uint64_t sent; |
8492
af33d1ef1c3c
QUIC: stream flow control refactored.
Roman Arutyunyan <arut@nginx.com>
parents:
8442
diff
changeset
|
124 uint64_t recv_offset; |
af33d1ef1c3c
QUIC: stream flow control refactored.
Roman Arutyunyan <arut@nginx.com>
parents:
8442
diff
changeset
|
125 uint64_t recv_window; |
af33d1ef1c3c
QUIC: stream flow control refactored.
Roman Arutyunyan <arut@nginx.com>
parents:
8442
diff
changeset
|
126 uint64_t recv_last; |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
127 uint64_t recv_max_data; |
8855 | 128 uint64_t send_offset; |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
129 uint64_t send_max_data; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
130 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
131 uint64_t server_max_streams_uni; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
132 uint64_t server_max_streams_bidi; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
133 uint64_t server_streams_uni; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
134 uint64_t server_streams_bidi; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
135 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
136 uint64_t client_max_streams_uni; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
137 uint64_t client_max_streams_bidi; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
138 uint64_t client_streams_uni; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
139 uint64_t client_streams_bidi; |
8552
fe919fd63b0b
QUIC: client certificate validation with OCSP.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8547
diff
changeset
|
140 |
fe919fd63b0b
QUIC: client certificate validation with OCSP.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8547
diff
changeset
|
141 ngx_uint_t initialized; |
fe919fd63b0b
QUIC: client certificate validation with OCSP.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8547
diff
changeset
|
142 /* unsigned initialized:1; */ |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
143 } ngx_quic_streams_t; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
144 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
145 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
146 typedef struct { |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
147 size_t in_flight; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
148 size_t window; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
149 size_t ssthresh; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
150 ngx_msec_t recovery_start; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
151 } ngx_quic_congestion_t; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
152 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
153 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
154 /* |
8498
4715f3e669f1
QUIC: updated specification references.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8493
diff
changeset
|
155 * RFC 9000, 12.3. Packet Numbers |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
156 * |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
157 * Conceptually, a packet number space is the context in which a packet |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
158 * can be processed and acknowledged. Initial packets can only be sent |
8498
4715f3e669f1
QUIC: updated specification references.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8493
diff
changeset
|
159 * with Initial packet protection keys and acknowledged in packets that |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
160 * are also Initial packets. |
8498
4715f3e669f1
QUIC: updated specification references.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8493
diff
changeset
|
161 */ |
8411
bc910a5ec737
QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8410
diff
changeset
|
162 struct ngx_quic_send_ctx_s { |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
163 enum ssl_encryption_level_t level; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
164 |
8856
f9c788f3f5cc
QUIC: ngx_quic_buffer_t object.
Roman Arutyunyan <arut@nginx.com>
parents:
8855
diff
changeset
|
165 ngx_quic_buffer_t crypto; |
8442
b3f6ad181df4
QUIC: refactored CRYPTO and STREAM buffer ordering.
Roman Arutyunyan <arut@nginx.com>
parents:
8424
diff
changeset
|
166 uint64_t crypto_sent; |
b3f6ad181df4
QUIC: refactored CRYPTO and STREAM buffer ordering.
Roman Arutyunyan <arut@nginx.com>
parents:
8424
diff
changeset
|
167 |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
168 uint64_t pnum; /* to be sent */ |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
169 uint64_t largest_ack; /* received from peer */ |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
170 uint64_t largest_pn; /* received from peer */ |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
171 |
8547
ad046179eb91
QUIC: handle EAGAIN properly on UDP sockets.
Vladimir Homutov <vl@nginx.com>
parents:
8498
diff
changeset
|
172 ngx_queue_t frames; /* generated frames */ |
ad046179eb91
QUIC: handle EAGAIN properly on UDP sockets.
Vladimir Homutov <vl@nginx.com>
parents:
8498
diff
changeset
|
173 ngx_queue_t sending; /* frames assigned to pkt */ |
ad046179eb91
QUIC: handle EAGAIN properly on UDP sockets.
Vladimir Homutov <vl@nginx.com>
parents:
8498
diff
changeset
|
174 ngx_queue_t sent; /* frames waiting ACK */ |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
175 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
176 uint64_t pending_ack; /* non sent ack-eliciting */ |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
177 uint64_t largest_range; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
178 uint64_t first_range; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
179 ngx_msec_t largest_received; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
180 ngx_msec_t ack_delay_start; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
181 ngx_uint_t nranges; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
182 ngx_quic_ack_range_t ranges[NGX_QUIC_MAX_RANGES]; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
183 ngx_uint_t send_ack; |
8411
bc910a5ec737
QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8410
diff
changeset
|
184 }; |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
185 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
186 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
187 struct ngx_quic_connection_s { |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
188 uint32_t version; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
189 |
8797
1e2f4e9c8195
QUIC: reworked migration handling.
Vladimir Homutov <vl@nginx.com>
parents:
8763
diff
changeset
|
190 ngx_quic_path_t *path; |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
191 |
8423
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
192 ngx_queue_t sockets; |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
193 ngx_queue_t paths; |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
194 ngx_queue_t client_ids; |
8423
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
195 ngx_queue_t free_sockets; |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
196 ngx_queue_t free_paths; |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
197 ngx_queue_t free_client_ids; |
8423
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
198 |
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
199 ngx_uint_t nsockets; |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
200 ngx_uint_t nclient_ids; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
201 uint64_t max_retired_seqnum; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
202 uint64_t client_seqnum; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
203 uint64_t server_seqnum; |
8423
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
204 uint64_t path_seqnum; |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
205 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
206 ngx_quic_tp_t tp; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
207 ngx_quic_tp_t ctp; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
208 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
209 ngx_quic_send_ctx_t send_ctx[NGX_QUIC_SEND_CTX_LAST]; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
210 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
211 ngx_quic_keys_t *keys; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
212 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
213 ngx_quic_conf_t *conf; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
214 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
215 ngx_event_t push; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
216 ngx_event_t pto; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
217 ngx_event_t close; |
8423
4117aa7fa38e
QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8415
diff
changeset
|
218 ngx_event_t path_validation; |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
219 ngx_msec_t last_cc; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
220 |
8493
004172345bdc
QUIC: persistent congestion calculation.
Vladimir Homutov <vl@nginx.com>
parents:
8492
diff
changeset
|
221 ngx_msec_t first_rtt; |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
222 ngx_msec_t latest_rtt; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
223 ngx_msec_t avg_rtt; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
224 ngx_msec_t min_rtt; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
225 ngx_msec_t rttvar; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
226 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
227 ngx_uint_t pto_count; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
228 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
229 ngx_queue_t free_frames; |
8763
fb811b6c76ee
QUIC: refactored buffer allocation, spliting and freeing.
Roman Arutyunyan <arut@nginx.com>
parents:
8729
diff
changeset
|
230 ngx_buf_t *free_bufs; |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
231 ngx_buf_t *free_shadow_bufs; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
232 |
8645
404de224517e
QUIC: limited the total number of frames.
Roman Arutyunyan <arut@nginx.com>
parents:
8644
diff
changeset
|
233 ngx_uint_t nframes; |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
234 #ifdef NGX_QUIC_DEBUG_ALLOC |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
235 ngx_uint_t nbufs; |
8763
fb811b6c76ee
QUIC: refactored buffer allocation, spliting and freeing.
Roman Arutyunyan <arut@nginx.com>
parents:
8729
diff
changeset
|
236 ngx_uint_t nshadowbufs; |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
237 #endif |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
238 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
239 ngx_quic_streams_t streams; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
240 ngx_quic_congestion_t congestion; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
241 |
8644
6204120cf37f
QUIC: traffic-based flood detection.
Roman Arutyunyan <arut@nginx.com>
parents:
8552
diff
changeset
|
242 off_t received; |
6204120cf37f
QUIC: traffic-based flood detection.
Roman Arutyunyan <arut@nginx.com>
parents:
8552
diff
changeset
|
243 |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
244 ngx_uint_t error; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
245 enum ssl_encryption_level_t error_level; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
246 ngx_uint_t error_ftype; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
247 const char *error_reason; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
248 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
249 ngx_uint_t shutdown_code; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
250 const char *shutdown_reason; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
251 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
252 unsigned error_app:1; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
253 unsigned send_timer_set:1; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
254 unsigned closing:1; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
255 unsigned shutdown:1; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
256 unsigned draining:1; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
257 unsigned key_phase:1; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
258 unsigned validated:1; |
8686
1d7bf9778328
QUIC: converted client_tp_done to bitfield.
Vladimir Homutov <vl@nginx.com>
parents:
8645
diff
changeset
|
259 unsigned client_tp_done:1; |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
260 }; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
261 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
262 |
8413
46161c610919
QUIC: separate files for SSL library interfaces.
Vladimir Homutov <vl@nginx.com>
parents:
8412
diff
changeset
|
263 ngx_int_t ngx_quic_apply_transport_params(ngx_connection_t *c, |
46161c610919
QUIC: separate files for SSL library interfaces.
Vladimir Homutov <vl@nginx.com>
parents:
8412
diff
changeset
|
264 ngx_quic_tp_t *ctp); |
46161c610919
QUIC: separate files for SSL library interfaces.
Vladimir Homutov <vl@nginx.com>
parents:
8412
diff
changeset
|
265 void ngx_quic_discard_ctx(ngx_connection_t *c, |
46161c610919
QUIC: separate files for SSL library interfaces.
Vladimir Homutov <vl@nginx.com>
parents:
8412
diff
changeset
|
266 enum ssl_encryption_level_t level); |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
267 void ngx_quic_close_connection(ngx_connection_t *c, ngx_int_t rc); |
8411
bc910a5ec737
QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8410
diff
changeset
|
268 void ngx_quic_shutdown_quic(ngx_connection_t *c); |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
269 |
8411
bc910a5ec737
QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8410
diff
changeset
|
270 #if (NGX_DEBUG) |
bc910a5ec737
QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8410
diff
changeset
|
271 void ngx_quic_connstate_dbg(ngx_connection_t *c); |
bc910a5ec737
QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8410
diff
changeset
|
272 #else |
bc910a5ec737
QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8410
diff
changeset
|
273 #define ngx_quic_connstate_dbg(c) |
bc910a5ec737
QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8410
diff
changeset
|
274 #endif |
bc910a5ec737
QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8410
diff
changeset
|
275 |
8407 | 276 #endif /* _NGX_EVENT_QUIC_CONNECTION_H_INCLUDED_ */ |