Mercurial > hg > nginx
comparison src/http/v3/ngx_http_v3_request.c @ 8456:c9538aef3211 quic
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
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Thu, 02 Jul 2020 15:34:05 +0300 |
parents | a6675a976560 |
children | 72f9ff4e0a88 |
comparison
equal
deleted
inserted
replaced
8455:b0e81f49d7c0 | 8456:c9538aef3211 |
---|---|
62 r->parse_start = b->pos; | 62 r->parse_start = b->pos; |
63 r->state = 1; | 63 r->state = 1; |
64 } | 64 } |
65 | 65 |
66 while (b->pos < b->last) { | 66 while (b->pos < b->last) { |
67 rc = ngx_http_v3_parse_headers(c, st, *b->pos++); | 67 rc = ngx_http_v3_parse_headers(c, st, *b->pos); |
68 | 68 |
69 if (rc == NGX_ERROR) { | 69 if (rc == NGX_ERROR) { |
70 goto failed; | 70 goto failed; |
71 } | 71 } |
72 | |
73 if (rc == NGX_BUSY) { | |
74 return NGX_BUSY; | |
75 } | |
76 | |
77 b->pos++; | |
72 | 78 |
73 if (rc == NGX_AGAIN) { | 79 if (rc == NGX_AGAIN) { |
74 continue; | 80 continue; |
75 } | 81 } |
76 | 82 |