improve frame_is_binary setting
authorAndy Green <andy.green@linaro.org>
Sat, 19 Jan 2013 02:39:35 +0000 (10:39 +0800)
committerAndy Green <andy.green@linaro.org>
Sat, 19 Jan 2013 02:39:35 +0000 (10:39 +0800)
Gregory Junker <ggjunker@gmail.com> noticed the binary flag is not
getting set right, or at all on client side.  This should improve
matters.

Signed-off-by: Andy Green <andy.green@linaro.org>
lib/client-parser.c
lib/parsers.c

index ee87d71..1367c6f 100644 (file)
@@ -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;
 
index b2d40f2..062cc37 100644 (file)
@@ -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;