annotate src/http/v3/ngx_http_v3_encode.h @ 8903:0d3bf08eaac0 quic

HTTP/3: allowed QUIC stream connection reuse. A QUIC stream connection is treated as reusable until first bytes of request arrive, which is also when the request object is now allocated. A connection closed as a result of draining, is reset with the error code H3_REQUEST_REJECTED. Such behavior is allowed by quic-http-34: Once a request stream has been opened, the request MAY be cancelled by either endpoint. Clients cancel requests if the response is no longer of interest; servers cancel requests if they are unable to or choose not to respond. When the server cancels a request without performing any application processing, the request is considered "rejected." The server SHOULD abort its response stream with the error code H3_REQUEST_REJECTED. The client can treat requests rejected by the server as though they had never been sent at all, thereby allowing them to be retried later.
author Roman Arutyunyan <arut@nginx.com>
date Mon, 18 Oct 2021 15:47:06 +0300
parents 0ac25efb2da3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8773
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_ENCODE_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_ENCODE_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 uintptr_t ngx_http_v3_encode_varlen_int(u_char *p, uint64_t value);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
18 uintptr_t ngx_http_v3_encode_prefix_int(u_char *p, uint64_t value,
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
19 ngx_uint_t prefix);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
20
8807
0ac25efb2da3 HTTP/3: quic-qpack term updates.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8773
diff changeset
21 uintptr_t ngx_http_v3_encode_field_section_prefix(u_char *p,
8773
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
22 ngx_uint_t insert_count, ngx_uint_t sign, ngx_uint_t delta_base);
8807
0ac25efb2da3 HTTP/3: quic-qpack term updates.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8773
diff changeset
23 uintptr_t ngx_http_v3_encode_field_ri(u_char *p, ngx_uint_t dynamic,
8773
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
24 ngx_uint_t index);
8807
0ac25efb2da3 HTTP/3: quic-qpack term updates.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8773
diff changeset
25 uintptr_t ngx_http_v3_encode_field_lri(u_char *p, ngx_uint_t dynamic,
8773
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
26 ngx_uint_t index, u_char *data, size_t len);
8807
0ac25efb2da3 HTTP/3: quic-qpack term updates.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8773
diff changeset
27 uintptr_t ngx_http_v3_encode_field_l(u_char *p, ngx_str_t *name,
8773
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
28 ngx_str_t *value);
8807
0ac25efb2da3 HTTP/3: quic-qpack term updates.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8773
diff changeset
29 uintptr_t ngx_http_v3_encode_field_pbi(u_char *p, ngx_uint_t index);
0ac25efb2da3 HTTP/3: quic-qpack term updates.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8773
diff changeset
30 uintptr_t ngx_http_v3_encode_field_lpbi(u_char *p, ngx_uint_t index,
8773
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
31 u_char *data, size_t len);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
32
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
33
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
34 #endif /* _NGX_HTTP_V3_ENCODE_H_INCLUDED_ */