introdice tracking if frame is binary

Signed-off-by: Andy Green <andy.green@linaro.org>
This commit is contained in:
Andy Green 2013-01-18 09:49:20 +08:00
parent 759c9ac465
commit 2fd3f2f78f
4 changed files with 36 additions and 1 deletions

View file

@ -828,6 +828,9 @@ lws_daemonize(const char *_lock_path);
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);

View file

@ -611,6 +611,20 @@ xor_mask_05(struct libwebsocket *wsi, unsigned char c)
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 @@ spill:
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:

View file

@ -367,6 +367,7 @@ struct libwebsocket {
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);

View file

@ -370,6 +370,22 @@ log level defaults to "err" and "warn" contexts enabled only and
emission on stderr.
</blockquote>
<hr>
<h2>lws_frame_is_binary - </h2>
<i>int</i>
<b>lws_frame_is_binary</b>
(<i>struct libwebsocket *</i> <b>wsi</b>)
<h3>Arguments</h3>
<dl>
<dt><b>wsi</b>
<dd>the connection we are inquiring about
</dl>
<h3>Description</h3>
<blockquote>
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.
</blockquote>
<hr>
<h2>libwebsockets_remaining_packet_payload - Bytes to come before "overall" rx packet is complete</h2>
<i>size_t</i>
<b>libwebsockets_remaining_packet_payload</b>