summaryrefslogtreecommitdiffhomepage
path: root/src/http/ngx_http_spdy.c
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 /src/http/ngx_http_spdy.c
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.
Diffstat (limited to 'src/http/ngx_http_spdy.c')
-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) {