From b7f25fe7ffb3c0bbe95ccbb0f0dd028498db13de Mon Sep 17 00:00:00 2001 From: David Galeano Date: Thu, 10 Jan 2013 10:22:47 +0800 Subject: [PATCH] More correct handling of inflate result. --- lib/extension-deflate-frame.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/extension-deflate-frame.c b/lib/extension-deflate-frame.c index 514c6b7..a3ff9f0 100644 --- a/lib/extension-deflate-frame.c +++ b/lib/extension-deflate-frame.c @@ -142,6 +142,7 @@ int lws_extension_callback_deflate_frame( n = inflate(&conn->zs_in, Z_SYNC_FLUSH); switch (n) { case Z_NEED_DICT: + case Z_STREAM_ERROR: case Z_DATA_ERROR: case Z_MEM_ERROR: /* @@ -153,10 +154,11 @@ int lws_extension_callback_deflate_frame( return -1; } - if (conn->zs_in.avail_in > 0) { + if (!conn->zs_in.avail_in) { size_t len_so_far = (conn->zs_in.next_out - (conn->buf_in + LWS_SEND_BUFFER_PRE_PADDING)); unsigned char *new_buf; + conn->buf_in_length *= 2; new_buf = (unsigned char *) malloc(LWS_SEND_BUFFER_PRE_PADDING + -- 2.7.4