introdice tracking if frame is binary

Signed-off-by: Andy Green <andy.green@linaro.org>
diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h
index 9055f9b..404d525 100644
--- a/lib/libwebsockets.h
+++ b/lib/libwebsockets.h
@@ -828,6 +828,9 @@
 LWS_EXTERN int
 lws_send_pipe_choked(struct libwebsocket *wsi);
 
+LWS_EXTERN int
+lws_frame_is_binary(struct libwebsocket *wsi);
+
 LWS_EXTERN unsigned char *
 libwebsockets_SHA1(const unsigned char *d, size_t n, unsigned char *md);
 
diff --git a/lib/parsers.c b/lib/parsers.c
index 5563df7..a1e4a48 100644
--- a/lib/parsers.c
+++ b/lib/parsers.c
@@ -611,6 +611,20 @@
 	return c ^ wsi->frame_masking_nonce_04[(wsi->frame_mask_index++) & 3];
 }
 
+/**
+ * lws_frame_is_binary: true if the current frame was sent in binary mode
+ *
+ * @wsi: the connection we are inquiring about
+ *
+ * This is intended to be called from the LWS_CALLBACK_RECEIVE callback if
+ * it's interested to see if the frame it's dealing with was sent in binary
+ * mode.
+ */
+
+int lws_frame_is_binary(struct libwebsocket *wsi)
+{
+	return wsi->frame_is_binary;
+}
 
 
 int
@@ -1083,9 +1097,10 @@
 			wsi->rx_user_buffer_head = 0;
 			return 0;
 
-		case LWS_WS_OPCODE_07__CONTINUATION:
 		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;
 
 		default:
diff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h
index 8374bb6..8c52c81 100644
--- a/lib/private-libwebsockets.h
+++ b/lib/private-libwebsockets.h
@@ -367,6 +367,7 @@
 	unsigned char opcode;
 	unsigned char final;
 	unsigned char rsv;
+	int frame_is_binary:1;
 
 	int pings_vs_pongs;
 	unsigned char (*xor_mask)(struct libwebsocket *, unsigned char);