Module: sip-router
Branch: pd/websocket
Commit: 62691a52ffd48e4dc674027cfe9b984620a55b88
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=62691a5…
Author: Peter Dunkley <peter.dunkley(a)crocodile-rcs.com>
Committer: Peter Dunkley <peter.dunkley(a)crocodile-rcs.com>
Date: Sun Jun 17 00:43:44 2012 +0100
core: tidied up websocket frame length code
---
tcp_read.c | 19 +++++++++----------
1 files changed, 9 insertions(+), 10 deletions(-)
diff --git a/tcp_read.c b/tcp_read.c
index ccb5481..187e9a1 100644
--- a/tcp_read.c
+++ b/tcp_read.c
@@ -1019,7 +1019,7 @@ int msrp_process_msg(char* tcpbuf, unsigned int len,
static int tcp_read_ws(struct tcp_connection *c, int* read_flags)
{
int bytes, pos, mask_present;
- unsigned long len;
+ unsigned int len;
char *p;
struct tcp_req *r;
@@ -1079,9 +1079,9 @@ static int tcp_read_ws(struct tcp_connection *c, int* read_flags)
if (bytes < pos + 2)
goto skip;
- len = 0;
- len |= (p[pos++] & 0xff) << 8;
- len |= (p[pos++] & 0xff) << 0;
+ len = ((p[pos + 0] & 0xff) << 8)
+ | ((p[pos + 1] & 0xff) << 0);
+ pos += 2;
}
else if (len == 127)
{
@@ -1091,12 +1091,11 @@ static int tcp_read_ws(struct tcp_connection *c, int* read_flags)
/* Only decoding the last four bytes of the length...
This limits the size of WebSocket messages that can be
handled to 2^32 - which should be plenty for SIP! */
- len = 0;
- pos += 4;
- len |= (p[pos++] & 0xff) << 24;
- len |= (p[pos++] & 0xff) << 16;
- len |= (p[pos++] & 0xff) << 8;
- len |= (p[pos++] & 0xff) << 0;
+ len = ((p[pos + 4] & 0xff) << 24)
+ | ((p[pos + 5] & 0xff) << 16)
+ | ((p[pos + 6] & 0xff) << 8)
+ | ((p[pos + 7] & 0xff) << 0);
+ pos += 8;
}
/* Skip mask */