kore

An easy to use, scalable and secure web application framework for writing web APIs in C.
Commits | Files | Refs | README | LICENSE | git clone https://git.kore.io/kore.git

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:
src/spdy.c | 12+-----------
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);