[PATCH] SPDY: fix support for headers with multiple values

Valentin V. Bartenev vbart at nginx.com
Tue Jul 8 10:07:27 UTC 2014


On Tuesday 08 July 2014 13:44:30 Valentin V. Bartenev wrote:
> On Tuesday 08 July 2014 02:29:21 Piotr Sikora wrote:
> > # HG changeset patch
> > # User Piotr Sikora <piotr at cloudflare.com>
> > # Date 1404811064 25200
> > #      Tue Jul 08 02:17:44 2014 -0700
> > # Node ID 0d4b16900e55bc3495fb63b3e93f06cac690497b
> > # Parent  a680bf4dddd5c4b106419e3dfb0264815c401275
> > SPDY: fix support for headers with multiple values.
> > 
> > Split SPDY header with multiple, NULL-separated values:
> > 
> >     cookie: foo\0bar
> > 
> > into two separate HTTP headers with the same name:
> > 
> >     cookie: foo
> >     cookie: bar
> > 
> > Even though the logic for this behavior already existed
> > in the source code, it doesn't look that it ever worked
> > and SPDY streams with such headers were simply rejected.
> > 
> > Signed-off-by: Piotr Sikora <piotr at cloudflare.com>
> > 
> > diff -r a680bf4dddd5 -r 0d4b16900e55 src/http/ngx_http_spdy.c
> > --- a/src/http/ngx_http_spdy.c	Sat Jul 05 23:29:47 2014 +0400
> > +++ b/src/http/ngx_http_spdy.c	Tue Jul 08 02:17:44 2014 -0700
> > @@ -2584,6 +2584,8 @@ ngx_http_spdy_parse_header(ngx_http_requ
> >                  r->header_end = p;
> >                  r->header_in->pos = p + 1;
> >  
> > +                r->state = state;
> > +
> >                  return NGX_OK;
> >              }
> >  
> 
> Nice catch, thank you.
> 
> Maxim, do you approve this for push?
> 
[..]

Probably, it's better to use constant here (like r->state = 0 in
the same function):

diff -r 9d3a9c45fc43 src/http/ngx_http_spdy.c
--- a/src/http/ngx_http_spdy.c  Tue Jul 01 20:52:08 2014 +0400
+++ b/src/http/ngx_http_spdy.c  Tue Jul 08 13:55:52 2014 +0400
@@ -2584,6 +2584,8 @@ ngx_http_spdy_parse_header(ngx_http_requ
                 r->header_end = p;
                 r->header_in->pos = p + 1;
 
+                r->state = sw_value;
+
                 return NGX_OK;
             }
 



More information about the nginx-devel mailing list