Remove sequence code in client and proxies.
This commit is contained in:
+1
-12
@@ -187,10 +187,6 @@ int encode(u_char const *src, size_t srclength, char *target, size_t targsize) {
|
||||
int i, sz = 0, len = 0;
|
||||
unsigned char chr;
|
||||
target[sz++] = '\x00';
|
||||
if (client_settings.do_seq_num) {
|
||||
sz += sprintf(target+sz, "%d:", client_settings.seq_num);
|
||||
client_settings.seq_num++;
|
||||
}
|
||||
if (client_settings.do_b64encode) {
|
||||
len = __b64_ntop(src, srclength, target+sz, targsize-sz);
|
||||
if (len < 0) {
|
||||
@@ -383,8 +379,6 @@ ws_ctx_t *do_handshake(int sock) {
|
||||
|
||||
// Reset settings
|
||||
client_settings.do_b64encode = 0;
|
||||
client_settings.do_seq_num = 0;
|
||||
client_settings.seq_num = 0;
|
||||
|
||||
// Peek, but don't read the data
|
||||
len = recv(sock, handshake, 1024, MSG_PEEK);
|
||||
@@ -449,11 +443,6 @@ ws_ctx_t *do_handshake(int sock) {
|
||||
printf(" b64encode=1\n");
|
||||
client_settings.do_b64encode = 1;
|
||||
}
|
||||
arg_idx = strstr(args_start, "seq_num");
|
||||
if (arg_idx && arg_idx < args_end) {
|
||||
printf(" seq_num=1\n");
|
||||
client_settings.do_seq_num = 1;
|
||||
}
|
||||
}
|
||||
|
||||
sprintf(response, server_handshake, pre, headers.origin, pre, scheme,
|
||||
@@ -569,7 +558,7 @@ void start_server() {
|
||||
/* Calculate dbufsize based on client_settings */
|
||||
if (client_settings.do_b64encode) {
|
||||
/* base64 is 4 bytes for every 3
|
||||
* 20 for WS '\x00' / '\xff', seq_num and good measure */
|
||||
* 20 for WS '\x00' / '\xff' and good measure */
|
||||
dbufsize = (bufsize * 3)/4 - 20;
|
||||
} else {
|
||||
/* UTF-8 encoding is up to 2X larger */
|
||||
|
||||
@@ -18,8 +18,6 @@ typedef struct {
|
||||
|
||||
typedef struct {
|
||||
int do_b64encode;
|
||||
int do_seq_num;
|
||||
int seq_num;
|
||||
} client_settings_t;
|
||||
|
||||
typedef struct {
|
||||
|
||||
+4
-14
@@ -23,10 +23,7 @@ settings = {
|
||||
'daemon' : True,
|
||||
'record' : None, }
|
||||
client_settings = {
|
||||
'b64encode' : False,
|
||||
'seq_num' : False, }
|
||||
|
||||
send_seq = 0
|
||||
'b64encode' : False, }
|
||||
|
||||
server_handshake = """HTTP/1.1 101 Web Socket Protocol Handshake\r
|
||||
Upgrade: WebSocket\r
|
||||
@@ -44,18 +41,13 @@ def traffic(token="."):
|
||||
sys.stdout.flush()
|
||||
|
||||
def encode(buf):
|
||||
global send_seq
|
||||
if client_settings['b64encode']:
|
||||
buf = b64encode(buf)
|
||||
else:
|
||||
# Modified UTF-8 encode
|
||||
buf = buf.decode('latin-1').encode('utf-8').replace("\x00", "\xc4\x80")
|
||||
|
||||
if client_settings['seq_num']:
|
||||
send_seq += 1
|
||||
return "\x00%d:%s\xff" % (send_seq-1, buf)
|
||||
else:
|
||||
return "\x00%s\xff" % buf
|
||||
return "\x00%s\xff" % buf
|
||||
|
||||
def decode(buf):
|
||||
""" Parse out WebSocket packets. """
|
||||
@@ -100,11 +92,9 @@ def gen_md5(keys):
|
||||
|
||||
|
||||
def do_handshake(sock):
|
||||
global client_settings, send_seq
|
||||
global client_settings
|
||||
|
||||
client_settings['b64encode'] = False
|
||||
client_settings['seq_num'] = False
|
||||
send_seq = 0
|
||||
|
||||
# Peek, but don't read the data
|
||||
handshake = sock.recv(1024, socket.MSG_PEEK)
|
||||
@@ -143,7 +133,7 @@ def do_handshake(sock):
|
||||
cvars = h['path'].partition('?')[2].partition('#')[0].split('&')
|
||||
for cvar in [c for c in cvars if c]:
|
||||
name, _, val = cvar.partition('=')
|
||||
if name not in ['b64encode', 'seq_num']: continue
|
||||
if name not in ['b64encode']: continue
|
||||
value = val and val or True
|
||||
client_settings[name] = value
|
||||
print " %s=%s" % (name, value)
|
||||
|
||||
Reference in New Issue
Block a user