changeset 6279:c72eaf694d99

HTTP/2: improved the ngx_http_v2_integer_octets(v) macro. Previously, it didn't work well for 0, 127, and 128, returning less than needed.
author Valentin Bartenev <vbart@nginx.com>
date Mon, 26 Oct 2015 17:46:16 +0300
parents b78df0822168
children 16905ecbb49e
files src/http/v2/ngx_http_v2_filter_module.c
diffstat 1 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/http/v2/ngx_http_v2_filter_module.c
+++ b/src/http/v2/ngx_http_v2_filter_module.c
@@ -12,7 +12,12 @@
 #include <ngx_http_v2_module.h>
 
 
-#define ngx_http_v2_integer_octets(v)  (((v) + 127) / 128)
+/*
+ * This returns precise number of octets for values in range 0..253
+ * and estimate number for the rest, but not smaller than required.
+ */
+
+#define ngx_http_v2_integer_octets(v)  (1 + (v) / 127)
 
 #define ngx_http_v2_literal_size(h)                                           \
     (ngx_http_v2_integer_octets(sizeof(h) - 1) + sizeof(h) - 1)