]> git.kaiwu.me - nginx.git/commitdiff
HTTP/2: fixed request length accounting.
authorValentin Bartenev <vbart@nginx.com>
Tue, 2 Feb 2016 13:33:55 +0000 (16:33 +0300)
committerValentin Bartenev <vbart@nginx.com>
Tue, 2 Feb 2016 13:33:55 +0000 (16:33 +0300)
Now it includes not only the received body size,
but the size of headers block as well.

src/http/v2/ngx_http_v2.c

index 9df2168ca538ef67e84949d8b24d72a83afb3fad..b7106fec82339fe9ce88d5151eecaa818f6aea85 100644 (file)
@@ -1185,6 +1185,8 @@ ngx_http_v2_state_headers(ngx_http_v2_connection_t *h2c, u_char *pos,
         return ngx_http_v2_connection_error(h2c, NGX_HTTP_V2_INTERNAL_ERROR);
     }
 
+    stream->request->request_length = h2c->state.length;
+
     stream->in_closed = h2c->state.flags & NGX_HTTP_V2_END_STREAM_FLAG;
     stream->node = node;
 
@@ -1751,7 +1753,6 @@ ngx_http_v2_handle_continuation(ngx_http_v2_connection_t *h2c, u_char *pos,
         return ngx_http_v2_connection_error(h2c, NGX_HTTP_V2_PROTOCOL_ERROR);
     }
 
-    h2c->state.length += ngx_http_v2_parse_length(head);
     h2c->state.flags |= p[4];
 
     if (h2c->state.sid != ngx_http_v2_parse_sid(&p[5])) {
@@ -1766,6 +1767,14 @@ ngx_http_v2_handle_continuation(ngx_http_v2_connection_t *h2c, u_char *pos,
 
     ngx_memcpy(pos, p, len);
 
+    len = ngx_http_v2_parse_length(head);
+
+    h2c->state.length += len;
+
+    if (h2c->state.stream) {
+        h2c->state.stream->request->request_length += len;
+    }
+
     h2c->state.handler = handler;
     return pos;
 }