[PATCH] SPDY: send PING reply frame right away.

Piotr Sikora piotr at cloudflare.com
Fri Jan 10 01:09:32 UTC 2014


# HG changeset patch
# User Piotr Sikora <piotr at cloudflare.com>
# Date 1389316088 -3600
#      Fri Jan 10 02:08:08 2014 +0100
# Node ID c26d5f5e8d74dc9ab71476688074717857df5216
# Parent  4aa64f6950313311e0d322a2af1788edeb7f036c
SPDY: send PING reply frame right away.

Previously, PING reply frame was queued right away, but it was send
along subsequent response, which means that in case of long running
request PING reply could have been delayed by more than 10 seconds,
which is the time some browsers are waiting for a PING reply.

Those browsers would then correctly consider such connection broken
and would resend exactly the same request over a new connection,
which isn't safe in case of non-idempotent HTTP methods.

Signed-off-by: Piotr Sikora <piotr at cloudflare.com>

diff -r 4aa64f695031 -r c26d5f5e8d74 src/http/ngx_http_spdy.c
--- a/src/http/ngx_http_spdy.c Sat Jan 04 03:32:22 2014 +0400
+++ b/src/http/ngx_http_spdy.c Fri Jan 10 02:08:08 2014 +0100
@@ -1367,6 +1367,10 @@ ngx_http_spdy_state_ping(ngx_http_spdy_c

     pos += NGX_SPDY_PING_SIZE;

+    if (ngx_http_spdy_send_output_queue(sc) == NGX_ERROR) {
+        return ngx_http_spdy_state_protocol_error(sc);
+    }
+
     return ngx_http_spdy_state_complete(sc, pos, end);
 }



More information about the nginx-devel mailing list