* to expect in that state and can deal with it in bulk more efficiently.
*/
-void
+int
lws_payload_until_length_exhausted(struct lws *wsi, unsigned char **buf,
size_t *len)
{
/* we want to leave 1 byte for the parser to handle properly */
if (avail <= 1)
- return;
+ return 0;
avail--;
rx_ubuf = wsi->u.ws.rx_ubuf + LWS_PRE + wsi->u.ws.rx_ubuf_head;
wsi->u.ws.rx_ubuf_head += avail;
wsi->u.ws.rx_packet_length -= avail;
*len -= avail;
+
+ return avail;
}
LWS_EXTERN int LWS_WARN_UNUSED_RESULT
lws_rx_sm(struct lws *wsi, unsigned char c);
-LWS_EXTERN void
+LWS_EXTERN int
lws_payload_until_length_exhausted(struct lws *wsi, unsigned char **buf, size_t *len);
LWS_EXTERN int LWS_WARN_UNUSED_RESULT
/* consume payload bytes efficiently */
if (wsi->lws_rx_parse_state ==
- LWS_RXPS_PAYLOAD_UNTIL_LENGTH_EXHAUSTED)
- lws_payload_until_length_exhausted(wsi, buf, &len);
+ LWS_RXPS_PAYLOAD_UNTIL_LENGTH_EXHAUSTED) {
+ m = lws_payload_until_length_exhausted(wsi, buf, &len);
+ if (wsi->rxflow_buffer)
+ wsi->rxflow_pos += m;
+ }
/* process the byte */
m = lws_rx_sm(wsi, *(*buf)++);