[PATCH] SPDY: stop emitting empty header values
Piotr Sikora
piotr at cloudflare.com
Tue Oct 21 11:16:01 UTC 2014
# HG changeset patch
# User Piotr Sikora <piotr at cloudflare.com>
# Date 1413890111 25200
# Tue Oct 21 04:15:11 2014 -0700
# Node ID fbc2eb84bd266b64644b00a6454c4f79f241af5a
# Parent 973fded4f461f3a397779b3a1dc80881b1b34974
SPDY: stop emitting empty header values.
Previously, nginx would emit empty values in a header with multiple,
NULL-separated values.
This is forbidden by the SPDY specification, which requires headers to
have either a single (possibly empty) value or multiple, NULL-separated
non-empty values.
Signed-off-by: Piotr Sikora <piotr at cloudflare.com>
diff -r 973fded4f461 -r fbc2eb84bd26 src/http/ngx_http_spdy_filter_module.c
--- a/src/http/ngx_http_spdy_filter_module.c Wed Oct 15 22:57:23 2014 +0400
+++ b/src/http/ngx_http_spdy_filter_module.c Tue Oct 21 04:15:11 2014 -0700
@@ -100,7 +100,7 @@ ngx_http_spdy_header_filter(ngx_http_req
u_char *p, *buf, *last;
ngx_buf_t *b;
ngx_str_t host;
- ngx_uint_t i, j, count, port;
+ ngx_uint_t i, j, count, port, sep;
ngx_chain_t *cl;
ngx_list_part_t *part, *pt;
ngx_table_elt_t *header, *h;
@@ -472,6 +472,7 @@ ngx_http_spdy_header_filter(ngx_http_req
pt = part;
h = header;
+ sep = header[i].value.len ? 1 : 0;
for (j = i + 1; /* void */; j++) {
@@ -493,9 +494,14 @@ ngx_http_spdy_header_filter(ngx_http_req
continue;
}
- *last++ = '\0';
+ if (h[j].value.len) {
+ if (sep) {
+ *last++ = '\0';
+ }
- last = ngx_cpymem(last, h[j].value.data, h[j].value.len);
+ last = ngx_cpymem(last, h[j].value.data, h[j].value.len);
+ sep = 1;
+ }
h[j].hash = 2;
}
More information about the nginx-devel
mailing list