# HG changeset patch # User Valentin Bartenev # Date 1454420035 -10800 # Node ID 0e0e2e522fa2cb439b636a2c19aca5bdfbe8704f # Parent e30c72b0dfda749036de51cce856bf8e289ee627 HTTP/2: fixed padding handling in HEADERS frame with CONTINUATION. 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 @@ 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); }