annotate src/http/v3/ngx_http_v3_tables.h @ 8546:d80365ca678d quic

HTTP/3: require mandatory uni streams before additional ones. As per quic-http-34: Endpoints SHOULD create the HTTP control stream as well as the unidirectional streams required by mandatory extensions (such as the QPACK encoder and decoder streams) first, and then create additional streams as allowed by their peer. Previously, client could create and destroy additional uni streams unlimited number of times before creating mandatory streams.
author Roman Arutyunyan <arut@nginx.com>
date Thu, 29 Jul 2021 10:03:36 +0300
parents 0ac25efb2da3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8433
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
1
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
2 /*
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
3 * Copyright (C) Roman Arutyunyan
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
4 * Copyright (C) Nginx, Inc.
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
5 */
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
6
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
7
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
8 #ifndef _NGX_HTTP_V3_TABLES_H_INCLUDED_
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
9 #define _NGX_HTTP_V3_TABLES_H_INCLUDED_
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
10
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
11
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
12 #include <ngx_config.h>
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
13 #include <ngx_core.h>
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
14 #include <ngx_http.h>
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
15
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
16
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
17 typedef struct {
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
18 ngx_str_t name;
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
19 ngx_str_t value;
8508
0ac25efb2da3 HTTP/3: quic-qpack term updates.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8435
diff changeset
20 } ngx_http_v3_field_t;
8433
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
21
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
22
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
23 typedef struct {
8508
0ac25efb2da3 HTTP/3: quic-qpack term updates.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8435
diff changeset
24 ngx_http_v3_field_t **elts;
8433
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
25 ngx_uint_t nelts;
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
26 ngx_uint_t base;
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
27 size_t size;
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
28 size_t capacity;
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
29 } ngx_http_v3_dynamic_table_t;
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
30
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
31
8435
6e2c23481abb HTTP/3: clean up table from session cleanup handler.
Roman Arutyunyan <arut@nginx.com>
parents: 8433
diff changeset
32 void ngx_http_v3_cleanup_table(ngx_http_v3_session_t *h3c);
8433
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
33 ngx_int_t ngx_http_v3_ref_insert(ngx_connection_t *c, ngx_uint_t dynamic,
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
34 ngx_uint_t index, ngx_str_t *value);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
35 ngx_int_t ngx_http_v3_insert(ngx_connection_t *c, ngx_str_t *name,
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
36 ngx_str_t *value);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
37 ngx_int_t ngx_http_v3_set_capacity(ngx_connection_t *c, ngx_uint_t capacity);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
38 ngx_int_t ngx_http_v3_duplicate(ngx_connection_t *c, ngx_uint_t index);
8508
0ac25efb2da3 HTTP/3: quic-qpack term updates.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8435
diff changeset
39 ngx_int_t ngx_http_v3_ack_section(ngx_connection_t *c, ngx_uint_t stream_id);
8433
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
40 ngx_int_t ngx_http_v3_inc_insert_count(ngx_connection_t *c, ngx_uint_t inc);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
41 ngx_int_t ngx_http_v3_lookup_static(ngx_connection_t *c, ngx_uint_t index,
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
42 ngx_str_t *name, ngx_str_t *value);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
43 ngx_int_t ngx_http_v3_lookup(ngx_connection_t *c, ngx_uint_t index,
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
44 ngx_str_t *name, ngx_str_t *value);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
45 ngx_int_t ngx_http_v3_decode_insert_count(ngx_connection_t *c,
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
46 ngx_uint_t *insert_count);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
47 ngx_int_t ngx_http_v3_check_insert_count(ngx_connection_t *c,
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
48 ngx_uint_t insert_count);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
49 ngx_int_t ngx_http_v3_set_param(ngx_connection_t *c, uint64_t id,
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
50 uint64_t value);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
51
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
52
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
53 #endif /* _NGX_HTTP_V3_TABLES_H_INCLUDED_ */