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;