commit 94eee6a8d157bcd12af62cd9b990e0017db40dc3
parent b0c67df9028069d5b9d2b4ef7d125213cd2f6fb5
Author: Joris Vink <joris@coders.se>
Date: Tue, 9 Jul 2013 15:21:48 +0200
- Do not wrongly ignore WINDOW_UPDATE frames when a stream is still active.
- Only unblock a stream if it was actually blocked before.
Diffstat:
1 file changed, 1 insertion(+), 11 deletions(-)
diff --git a/src/spdy.c b/src/spdy.c
@@ -160,11 +160,6 @@ spdy_frame_send(struct connection *c, u_int16_t type, u_int8_t flags,
} else {
net_send_queue(c, nb, length, 0, NULL, NULL);
}
-
- if (s != NULL) {
- if ((flags & FLAG_FIN) && (s->flags & FLAG_FIN))
- s->flags |= SPDY_STREAM_WILLCLOSE;
- }
}
struct spdy_stream *
@@ -497,14 +492,9 @@ spdy_ctrl_frame_window(struct netbuf *nb)
return (KORE_RESULT_ERROR);
}
- if (s->flags & SPDY_STREAM_WILLCLOSE) {
- kore_debug("received WINDOW_UPDATE for FIN stream");
- return (KORE_RESULT_ERROR);
- }
-
kore_debug("SPDY_WINDOW_UPDATE: %d:%d", stream_id, window_size);
s->wsize += window_size;
- if (s->wsize > 0) {
+ if (s->wsize > 0 && c->flags & CONN_WRITE_BLOCK) {
c->flags &= ~CONN_WRITE_BLOCK;
c->flags |= CONN_WRITE_POSSIBLE;
kore_connection_stop_idletimer(c);