1
This commit is contained in:
parent
fe229f0bb1
commit
d3671aa608
@ -145,19 +145,25 @@ namespace a8
|
|||||||
}
|
}
|
||||||
unsigned char szbuff [1024 * 65];
|
unsigned char szbuff [1024 * 65];
|
||||||
szbuff[0] = FIN | BINARY_MODE | 0;
|
szbuff[0] = FIN | BINARY_MODE | 0;
|
||||||
if (bufflen < 126) {
|
int mask_offset = 2;
|
||||||
szbuff[1] = bufflen;
|
int payloadlen = bufflen;
|
||||||
memmove(szbuff + 2, buff, bufflen);
|
if (payloadlen < 126) {
|
||||||
tcp_client_->SendBuff((char*)szbuff, bufflen + 2);
|
szbuff[1] = payloadlen | 0x80;
|
||||||
} else if (bufflen <= 0xFFFF) {
|
mask_offset = 2;
|
||||||
szbuff[1] = 126;
|
} else if (payloadlen <= 0xFFFF) {
|
||||||
szbuff[2] = (bufflen >> 8) & 0xFF;
|
szbuff[1] = 126 | 0x80;
|
||||||
szbuff[3] = bufflen & 0xFF;
|
szbuff[2] = (payloadlen >> 8) & 0xFF;
|
||||||
memmove(szbuff + 4, buff, bufflen);
|
szbuff[3] = payloadlen & 0xFF;
|
||||||
tcp_client_->SendBuff((char*)szbuff, bufflen + 4);
|
mask_offset = 4;
|
||||||
} else {
|
} else {
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
*((int*)(szbuff + mask_offset)) = rand();
|
||||||
|
for (unsigned i = 0; i < bufflen; ++i) {
|
||||||
|
szbuff[mask_offset + 4 + i] =
|
||||||
|
((unsigned char)buff[i]) ^ szbuff[mask_offset + (i % 4)] ;
|
||||||
|
}
|
||||||
|
tcp_client_->SendBuff((char*)szbuff, bufflen + mask_offset + 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebSocketClient::ProcessHandShake(char* buf, int& offset, unsigned int buflen)
|
void WebSocketClient::ProcessHandShake(char* buf, int& offset, unsigned int buflen)
|
||||||
|
@ -188,6 +188,11 @@ namespace a8
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
finbit|opcode|falgs
|
||||||
|
unsigned char header FIN|BINARY_MODE
|
||||||
|
unsigned char mask_payloadlen
|
||||||
|
*/
|
||||||
void WebSocketSession::DecodeFrame(char* buf, int& offset, unsigned int buflen)
|
void WebSocketSession::DecodeFrame(char* buf, int& offset, unsigned int buflen)
|
||||||
{
|
{
|
||||||
if (offset + 2 > (int)buflen) {
|
if (offset + 2 > (int)buflen) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user