Valentin Bartenev
May 15, 2014 11:26AM
details: http://hg.nginx.org/nginx/rev/6642690698f1
branches:
changeset: 5687:6642690698f1
user: Valentin Bartenev <vbart@nginx.com>
date: Wed Apr 30 20:33:58 2014 +0400
description:
SPDY: improved ngx_http_spdy_state_protocol_error().

Now ngx_http_spdy_state_protocol_error() is able to close stream,
so there is no need in a separate call for this.

Also fixed zero status code in logs for some cases.

diffstat:

src/http/ngx_http_spdy.c | 24 +++++++++++++++---------
1 files changed, 15 insertions(+), 9 deletions(-)

diffs (98 lines):

diff -r 5cf537731218 -r 6642690698f1 src/http/ngx_http_spdy.c
--- a/src/http/ngx_http_spdy.c Wed Apr 30 02:16:21 2014 +0400
+++ b/src/http/ngx_http_spdy.c Wed Apr 30 20:33:58 2014 +0400
@@ -1041,7 +1041,7 @@ ngx_http_spdy_state_headers(ngx_http_spd
if (z != Z_OK) {
ngx_log_error(NGX_LOG_INFO, r->connection->log, 0,
"spdy inflateSetDictionary() failed: %d", z);
- ngx_http_spdy_close_stream(sc->stream, 0);
+
return ngx_http_spdy_state_protocol_error(sc);
}

@@ -1055,7 +1055,7 @@ ngx_http_spdy_state_headers(ngx_http_spd
if (z != Z_OK) {
ngx_log_error(NGX_LOG_INFO, r->connection->log, 0,
"spdy inflate() failed: %d", z);
- ngx_http_spdy_close_stream(sc->stream, 0);
+
return ngx_http_spdy_state_protocol_error(sc);
}

@@ -1078,7 +1078,7 @@ ngx_http_spdy_state_headers(ngx_http_spd
ngx_log_error(NGX_LOG_INFO, r->connection->log, 0,
"client sent SYN_STREAM frame "
"with invalid HEADERS block");
- ngx_http_spdy_close_stream(sc->stream, NGX_HTTP_BAD_REQUEST);
+
return ngx_http_spdy_state_protocol_error(sc);
}

@@ -1159,7 +1159,7 @@ ngx_http_spdy_state_headers(ngx_http_spd
if (z != Z_OK) {
ngx_log_error(NGX_LOG_INFO, r->connection->log, 0,
"spdy inflate() failed: %d", z);
- ngx_http_spdy_close_stream(sc->stream, 0);
+
return ngx_http_spdy_state_protocol_error(sc);
}

@@ -1175,7 +1175,7 @@ ngx_http_spdy_state_headers(ngx_http_spd
/* TODO: improve error message */
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"spdy again while last chunk");
- ngx_http_spdy_close_stream(sc->stream, 0);
+
return ngx_http_spdy_state_protocol_error(sc);
}

@@ -1196,7 +1196,7 @@ ngx_http_spdy_state_headers(ngx_http_spd

ngx_log_error(NGX_LOG_INFO, r->connection->log, 0,
"client sent invalid HEADERS spdy frame");
- ngx_http_spdy_close_stream(sc->stream, NGX_HTTP_BAD_REQUEST);
+
return ngx_http_spdy_state_protocol_error(sc);
}

@@ -1208,7 +1208,7 @@ ngx_http_spdy_state_headers(ngx_http_spd
if (rc == NGX_HTTP_PARSE_INVALID_HEADER) {
ngx_log_error(NGX_LOG_INFO, r->connection->log, 0,
"client sent invalid HEADERS spdy frame");
- ngx_http_spdy_close_stream(sc->stream, NGX_HTTP_BAD_REQUEST);
+
return ngx_http_spdy_state_protocol_error(sc);
}

@@ -1224,7 +1224,7 @@ ngx_http_spdy_state_headers(ngx_http_spd
ngx_log_error(NGX_LOG_INFO, r->connection->log, 0,
"client sent SYN_STREAM frame "
"with invalid HEADERS block");
- ngx_http_spdy_close_stream(sc->stream, NGX_HTTP_BAD_REQUEST);
+
return ngx_http_spdy_state_protocol_error(sc);
}

@@ -1894,6 +1894,8 @@ ngx_http_spdy_state_complete(ngx_http_sp
u_char *end)
{
sc->handler = ngx_http_spdy_state_head;
+ sc->stream = NULL;
+
return pos;
}

@@ -1929,8 +1931,12 @@ ngx_http_spdy_state_protocol_error(ngx_h
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, sc->connection->log, 0,
"spdy state protocol error");

- /* TODO */
+ if (sc->stream) {
+ ngx_http_spdy_close_stream(sc->stream, NGX_HTTP_BAD_REQUEST);
+ }
+
ngx_http_spdy_finalize_connection(sc, NGX_HTTP_CLIENT_CLOSED_REQUEST);
+
return NULL;
}


_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[nginx] SPDY: improved ngx_http_spdy_state_protocol_error().

Valentin Bartenev 445 May 15, 2014 11:26AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 144
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 500 on July 15, 2024
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready