From 10601c1fbab5562527ef3806f989a5033a190921 Mon Sep 17 00:00:00 2001 From: Andy Green Date: Sat, 19 Jan 2013 10:39:35 +0800 Subject: [PATCH] improve frame_is_binary setting Gregory Junker noticed the binary flag is not getting set right, or at all on client side. This should improve matters. Signed-off-by: Andy Green --- lib/client-parser.c | 9 ++++++++- lib/parsers.c | 10 ++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/client-parser.c b/lib/client-parser.c index ee87d71d..1367c6f6 100644 --- a/lib/client-parser.c +++ b/lib/client-parser.c @@ -139,7 +139,14 @@ int libwebsocket_client_rx_sm(struct libwebsocket *wsi, unsigned char c) wsi->opcode = c & 0xf; wsi->rsv = (c & 0x70); wsi->final = !!((c >> 7) & 1); - + switch (wsi->opcode) { + case LWS_WS_OPCODE_07__TEXT_FRAME: + wsi->frame_is_binary = 0; + break; + case LWS_WS_OPCODE_07__BINARY_FRAME: + wsi->frame_is_binary = 1; + break; + } wsi->lws_rx_parse_state = LWS_RXPS_04_FRAME_HDR_LEN; break; diff --git a/lib/parsers.c b/lib/parsers.c index b2d40f2f..062cc37c 100644 --- a/lib/parsers.c +++ b/lib/parsers.c @@ -792,7 +792,14 @@ handle_first: wsi->opcode = c & 0xf; wsi->rsv = (c & 0x70); wsi->final = !!((c >> 7) & 1); - + switch (wsi->opcode) { + case LWS_WS_OPCODE_07__TEXT_FRAME: + wsi->frame_is_binary = 0; + break; + case LWS_WS_OPCODE_07__BINARY_FRAME: + wsi->frame_is_binary = 1; + break; + } wsi->lws_rx_parse_state = LWS_RXPS_04_FRAME_HDR_LEN; break; @@ -1071,7 +1078,6 @@ spill: case LWS_WS_OPCODE_07__TEXT_FRAME: case LWS_WS_OPCODE_07__BINARY_FRAME: - wsi->frame_is_binary = wsi->opcode == LWS_WS_OPCODE_07__BINARY_FRAME; case LWS_WS_OPCODE_07__CONTINUATION: break;