summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorValentin Bartenev <vbart@nginx.com>2014-01-22 04:58:19 +0400
committerValentin Bartenev <vbart@nginx.com>2014-01-22 04:58:19 +0400
commit32bb39c48fd8f9d1481353adb5e428a6097f7ee9 (patch)
treee624293e3cbdf3f7ff798a39b077644eb0ca6463
parenta0015da906a30ed111512091e2e8ff9b0d6c199b (diff)
downloadnginx-32bb39c48fd8f9d1481353adb5e428a6097f7ee9.tar.gz
nginx-32bb39c48fd8f9d1481353adb5e428a6097f7ee9.tar.bz2
SPDY: fixed possible segfault.
While processing a DATA frame, the link to related stream is stored in spdy connection object as part of connection state. But this stream can be closed between receiving parts of the frame.
-rw-r--r--src/http/ngx_http_spdy.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/http/ngx_http_spdy.c b/src/http/ngx_http_spdy.c
index a01e0b100..bfed97bdc 100644
--- a/src/http/ngx_http_spdy.c
+++ b/src/http/ngx_http_spdy.c
@@ -2665,6 +2665,10 @@ ngx_http_spdy_close_stream(ngx_http_spdy_stream_t *stream, ngx_int_t rc)
}
}
+ if (sc->stream == stream) {
+ sc->stream = NULL;
+ }
+
if (stream->handled) {
for (s = sc->last_stream; s; s = s->next) {
if (s->next == stream) {