changeset 6058:7ba52c995325

SPDY: fixed error handling in ngx_http_spdy_send_output_queue().
author Valentin Bartenev <vbart@nginx.com>
date Mon, 23 Mar 2015 20:47:46 +0300
parents 5c1b480ddcab
children c81d79a7befd
files src/http/ngx_http_spdy.c
diffstat 1 files changed, 12 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/http/ngx_http_spdy.c
+++ b/src/http/ngx_http_spdy.c
@@ -700,20 +700,14 @@ ngx_http_spdy_send_output_queue(ngx_http
     cl = c->send_chain(c, cl, 0);
 
     if (cl == NGX_CHAIN_ERROR) {
-        c->error = 1;
-
-        if (!sc->blocked) {
-            ngx_post_event(wev, &ngx_posted_events);
-        }
-
-        return NGX_ERROR;
+        goto error;
     }
 
     clcf = ngx_http_get_module_loc_conf(sc->http_connection->conf_ctx,
                                         ngx_http_core_module);
 
     if (ngx_handle_write_event(wev, clcf->send_lowat) != NGX_OK) {
-        return NGX_ERROR; /* FIXME */
+        goto error;
     }
 
     if (cl) {
@@ -751,6 +745,16 @@ ngx_http_spdy_send_output_queue(ngx_http
     sc->last_out = frame;
 
     return NGX_OK;
+
+error:
+
+    c->error = 1;
+
+    if (!sc->blocked) {
+        ngx_post_event(wev, &ngx_posted_events);
+    }
+
+    return NGX_ERROR;
 }