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

Jim Radford radford at galvanix.com
Thu May 30 22:24:50 UTC 2013


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

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);
+    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;
 



More information about the nginx-devel mailing list