diff options
| author | Jim Radford <radford@galvanix.com> | 2013-06-07 13:16:00 -0700 |
|---|---|---|
| committer | Jim Radford <radford@galvanix.com> | 2013-06-07 13:16:00 -0700 |
| commit | de2ec2c65099b18f02020107fc97b5c639ed5aec (patch) | |
| tree | b3e13730e979b9548c2c7bc845979a509e3f1b84 | |
| parent | ddece08218b4fceaf86afb6a721ed8cd4a6411fe (diff) | |
| download | nginx-de2ec2c65099b18f02020107fc97b5c639ed5aec.tar.gz nginx-de2ec2c65099b18f02020107fc97b5c639ed5aec.tar.bz2 | |
SPDY: pass through the full status when available.
Avoid stripping the status text when proxying for compatibility with http.
| -rw-r--r-- | src/http/ngx_http_spdy_filter_module.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/http/ngx_http_spdy_filter_module.c b/src/http/ngx_http_spdy_filter_module.c index bc0089f66..a49de490a 100644 --- a/src/http/ngx_http_spdy_filter_module.c +++ b/src/http/ngx_http_spdy_filter_module.c @@ -162,7 +162,9 @@ ngx_http_spdy_header_filter(ngx_http_request_t *r) + 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,15 @@ ngx_http_spdy_header_filter(ngx_http_request_t *r) last = ngx_http_spdy_nv_write_val(last, "HTTP/1.1"); last = ngx_http_spdy_nv_write_name(last, "status"); - last = ngx_http_spdy_nv_write_vlen(last, 3); - last = ngx_sprintf(last, "%03ui", r->headers_out.status); + + 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_http_spdy_nv_write_vlen(last, 3); + last = ngx_sprintf(last, "%03ui", r->headers_out.status); + } count = 2; |
