typedef struct ngx_http_log_ctx_s ngx_http_log_ctx_t;
typedef struct ngx_http_chunked_s ngx_http_chunked_t;
typedef struct ngx_http_v2_stream_s ngx_http_v2_stream_t;
+typedef struct ngx_http_v3_parse_s ngx_http_v3_parse_t;
typedef ngx_int_t (*ngx_http_header_handler_pt)(ngx_http_request_t *r,
ngx_table_elt_t *h, ngx_uint_t offset);
ngx_http_connection_t *http_connection;
ngx_http_v2_stream_t *stream;
+ ngx_http_v3_parse_t *v3_parse;
ngx_http_log_handler_pt log_handler;
u_char *port_start;
u_char *port_end;
-#if (NGX_HTTP_V3)
- void *h3_parse;
-#endif
-
unsigned http_minor:16;
unsigned http_major:16;
};
} ngx_http_v3_loc_conf_t;
+struct ngx_http_v3_parse_s {
+ ngx_http_v3_parse_headers_t headers;
+ ngx_http_v3_parse_data_t body;
+};
+
+
typedef struct {
ngx_str_t name;
ngx_str_t value;
r->http_version = NGX_HTTP_VERSION_30;
+ r->v3_parse = ngx_pcalloc(r->pool, sizeof(ngx_http_v3_parse_t));
+ if (r->v3_parse == NULL) {
+ ngx_http_close_connection(c);
+ return;
+ }
+
c->data = r;
rev = c->read;
return;
}
- st = r->h3_parse;
-
- if (st == NULL) {
- st = ngx_pcalloc(c->pool, sizeof(ngx_http_v3_parse_headers_t));
- if (st == NULL) {
- ngx_http_finalize_request(r, NGX_HTTP_BAD_REQUEST);
- return;
- }
-
- r->h3_parse = st;
- }
+ st = &r->v3_parse->headers;
b = r->header_in;
ngx_http_v3_parse_data_t *st;
rb = r->request_body;
- st = r->h3_parse;
+ st = &r->v3_parse->body;
if (rb->rest == -1) {
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"http3 request body filter");
- st = ngx_pcalloc(r->pool, sizeof(ngx_http_v3_parse_data_t));
- if (st == NULL) {
- return NGX_HTTP_INTERNAL_SERVER_ERROR;
- }
-
- r->h3_parse = st;
-
cscf = ngx_http_get_module_srv_conf(r, ngx_http_core_module);
rb->rest = cscf->large_client_header_buffers.size;