From c2bb3dc7b399c321123ad98bbfc77c857f35998e Mon Sep 17 00:00:00 2001 From: Andy Green Date: Thu, 14 Feb 2013 11:25:44 +0800 Subject: [PATCH] unstaged server changes Signed-off-by: Andy Green --- lib/parsers.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/parsers.c b/lib/parsers.c index 23c3b942..8fccdeb4 100644 --- a/lib/parsers.c +++ b/lib/parsers.c @@ -904,12 +904,27 @@ handle_first: (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: /* * is this frame a control packet we should take care of at this