[nginx] HTTP/2: fixed padding handling in HEADERS frame with CON...
Valentin Bartenev
vbart at nginx.com
Tue Feb 2 13:35:54 UTC 2016
details: http://hg.nginx.org/nginx/rev/0e0e2e522fa2
branches:
changeset: 6376:0e0e2e522fa2
user: Valentin Bartenev <vbart at nginx.com>
date: Tue Feb 02 16:33:55 2016 +0300
description:
HTTP/2: fixed padding handling in HEADERS frame with CONTINUATION.
diffstat:
src/http/v2/ngx_http_v2.c | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
diffs (26 lines):
diff -r e30c72b0dfda -r 0e0e2e522fa2 src/http/v2/ngx_http_v2.c
--- a/src/http/v2/ngx_http_v2.c Tue Feb 02 16:33:55 2016 +0300
+++ b/src/http/v2/ngx_http_v2.c Tue Feb 02 16:33:55 2016 +0300
@@ -1733,11 +1733,21 @@ ngx_http_v2_handle_continuation(ngx_http
u_char *end, ngx_http_v2_handler_pt handler)
{
u_char *p;
- size_t len;
+ size_t len, skip;
uint32_t head;
len = h2c->state.length;
+ if (h2c->state.padding && (size_t) (end - pos) > len) {
+ skip = ngx_min(h2c->state.padding, (end - pos) - len);
+
+ h2c->state.padding -= skip;
+
+ p = pos;
+ pos += skip;
+ ngx_memmove(pos, p, len);
+ }
+
if ((size_t) (end - pos) < len + NGX_HTTP_V2_FRAME_HEADER_SIZE) {
return ngx_http_v2_state_save(h2c, pos, end, handler);
}
More information about the nginx-devel
mailing list