[PATCH/v2] SPDY: Allow returning the full status line

Valentin V. Bartenev vbart at nginx.com
Wed Jun 5 14:33:41 UTC 2013


On Friday 31 May 2013 08:52:41 Jim Radford wrote:
> On Fri, May 31, 2013 at 04:21:45AM +0400, Valentin V. Bartenev wrote:
> > On Friday 31 May 2013 02:24:50 Jim Radford wrote:
> > > This is a replacement to my previous patch which actaully includes the
> > > buffer length handling.
> > > 
> > > # HG changeset patch
> > > # User Jim Radford <radford at galvanix.com>
> > > # Date 1369952377 25200
> > > # Node ID 52d7b6082129c90275579fa3667cce3f537cbd09
> > > # Parent  00dbfac67e48a8fe20802287b6fca50950178b8b
> > > SPDY: Allow returning the full status line
> > 
> > [...]
> > 
> > Could you clarify a bit the purpose of this change?
> 
> When using nginx to proxy to http, the response status (code and text)
> are passed though unchanged if the request comes in via HTTP or HTTP
> over SSL; the text however is currently stripped when the request is
> made via SPDY.  For us this meant that enabling SPDY broke our
> application which expected to receive our custom status text.
> 
> While we could easily work around this, we think that it better for
> nginx to be request transport agnostic as much as possible.
> Applications that prefer a curt status may still provide one and it
> will be passed through unmolested.
> 

Ok, fair enough. See the review below:

> # HG changeset patch
> # User Jim Radford <radford at galvanix.com>
> # Date 1369952377 25200
> # Node ID 52d7b6082129c90275579fa3667cce3f537cbd09
> # Parent  00dbfac67e48a8fe20802287b6fca50950178b8b
> SPDY: Allow returning the full status line

You should not use capitalization after a colon, and also please
end the summary line with a period.

A small description of the problem would be nice to see here.

> diff -r 00dbfac67e48 -r 52d7b6082129 src/http/ngx_http_spdy_filter_module.c
> --- a/src/http/ngx_http_spdy_filter_module.c    Thu May 30 18:23:05 2013 +0400
> +++ b/src/http/ngx_http_spdy_filter_module.c    Thu May 30 15:19:37 2013 -0700
> @@ -162,7 +162,9 @@
>            + ngx_http_spdy_nv_nsize("version")
>            + ngx_http_spdy_nv_vsize("HTTP/1.1")
>            + ngx_http_spdy_nv_nsize("status")
> -          + ngx_http_spdy_nv_vsize("418");
> +          + (r->headers_out.status_line.len
> +             ? NGX_SPDY_NV_VLEN_SIZE + r->headers_out.status_line.len
> +             : ngx_http_spdy_nv_vsize("418"));
>  
>      clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
>  
> @@ -304,8 +306,14 @@
>      last = ngx_http_spdy_nv_write_val(last, "HTTP/1.1");
>  
>      last = ngx_http_spdy_nv_write_name(last, "status");
> -    last = ngx_spdy_frame_write_uint16(last, 3);
> -    last = ngx_sprintf(last, "%03ui", r->headers_out.status);

It turns too tightly. Please add an empty line here for better readability.

> +    if (r->headers_out.status_line.len) {
> +        last = ngx_http_spdy_nv_write_vlen(last, r->headers_out.status_line.len);
> +        last = ngx_cpymem(last, r->headers_out.status_line.data,
> +                          r->headers_out.status_line.len);
> +    } else {
> +        last = ngx_spdy_frame_write_uint16(last, 3);
> +        last = ngx_sprintf(last, "%03ui", r->headers_out.status);
> +    }
>  
>      count = 2;
>  
> 
> 

Also, please note changes in http://hg.nginx.org/nginx/rev/5776804fff04


  wbr, Valentin V. Bartenev



More information about the nginx-devel mailing list