aboutsummaryrefslogtreecommitdiff
path: root/src/http/v3/ngx_http_v3_request.c
diff options
context:
space:
mode:
authorRoman Arutyunyan <arut@nginx.com>2020-07-02 15:34:05 +0300
committerRoman Arutyunyan <arut@nginx.com>2020-07-02 15:34:05 +0300
commita687d08062d8cb029ab82249aa55833cf44be3ce (patch)
tree57ab07f1a9e3471ba1b43e6635bcde4094277bc7 /src/http/v3/ngx_http_v3_request.c
parenta7ef0da3c8b64f2b5f4d8a7e73e724a74611284c (diff)
downloadnginx-a687d08062d8cb029ab82249aa55833cf44be3ce.tar.gz
nginx-a687d08062d8cb029ab82249aa55833cf44be3ce.zip
HTTP/3: refactored dynamic table implementation.
Previously dynamic table was not functional because of zero limit on its size set by default. Now the following changes enable it: - new directives to set SETTINGS_QPACK_MAX_TABLE_CAPACITY and SETTINGS_QPACK_BLOCKED_STREAMS - send settings with SETTINGS_QPACK_MAX_TABLE_CAPACITY and SETTINGS_QPACK_BLOCKED_STREAMS to the client - send Insert Count Increment to the client - send Header Acknowledgement to the client - evict old dynamic table entries on overflow - decode Required Insert Count from client - block stream if Required Insert Count is not reached
Diffstat (limited to 'src/http/v3/ngx_http_v3_request.c')
-rw-r--r--src/http/v3/ngx_http_v3_request.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/http/v3/ngx_http_v3_request.c b/src/http/v3/ngx_http_v3_request.c
index 5747c8ee6..ae65ba9ea 100644
--- a/src/http/v3/ngx_http_v3_request.c
+++ b/src/http/v3/ngx_http_v3_request.c
@@ -64,12 +64,18 @@ ngx_http_v3_parse_request(ngx_http_request_t *r, ngx_buf_t *b)
}
while (b->pos < b->last) {
- rc = ngx_http_v3_parse_headers(c, st, *b->pos++);
+ rc = ngx_http_v3_parse_headers(c, st, *b->pos);
if (rc == NGX_ERROR) {
goto failed;
}
+ if (rc == NGX_BUSY) {
+ return NGX_BUSY;
+ }
+
+ b->pos++;
+
if (rc == NGX_AGAIN) {
continue;
}