check for default protocol rx buf limit
This fixes
http://libwebsockets.org/trac/ticket/13
When using the default rx protocol buffer, the check is
performed against 0 not the default length. That's the
case both in client and server code...
There's no problem if you actually give a max frame size
in the protocol definition.
Signed-off-by: Andy Green <andy.green@linaro.org>
diff --git a/lib/client-parser.c b/lib/client-parser.c
index 707000b..3b79f3e 100644
--- a/lib/client-parser.c
+++ b/lib/client-parser.c
@@ -230,12 +230,27 @@
(wsi->u.ws.frame_mask_index++) & 3];
if (--wsi->u.ws.rx_packet_length == 0) {
+ /* spill because we have the whole frame */
wsi->lws_rx_parse_state = LWS_RXPS_NEW;
goto spill;
}
- if (wsi->u.ws.rx_user_buffer_head !=
- wsi->protocol->rx_buffer_size)
+
+ /*
+ * if there's no protocol max frame size given, we are
+ * supposed to default to LWS_MAX_SOCKET_IO_BUF
+ */
+
+ if (!wsi->protocol->rx_buffer_size &&
+ wsi->u.ws.rx_user_buffer_head !=
+ LWS_MAX_SOCKET_IO_BUF)
break;
+ else
+ if (wsi->protocol->rx_buffer_size &&
+ wsi->u.ws.rx_user_buffer_head !=
+ wsi->protocol->rx_buffer_size)
+ break;
+
+ /* spill because we filled our rx buffer */
spill:
handled = 0;