1
This commit is contained in:
parent
fe229f0bb1
commit
d3671aa608
@ -145,19 +145,25 @@ namespace a8
|
||||
}
|
||||
unsigned char szbuff [1024 * 65];
|
||||
szbuff[0] = FIN | BINARY_MODE | 0;
|
||||
if (bufflen < 126) {
|
||||
szbuff[1] = bufflen;
|
||||
memmove(szbuff + 2, buff, bufflen);
|
||||
tcp_client_->SendBuff((char*)szbuff, bufflen + 2);
|
||||
} else if (bufflen <= 0xFFFF) {
|
||||
szbuff[1] = 126;
|
||||
szbuff[2] = (bufflen >> 8) & 0xFF;
|
||||
szbuff[3] = bufflen & 0xFF;
|
||||
memmove(szbuff + 4, buff, bufflen);
|
||||
tcp_client_->SendBuff((char*)szbuff, bufflen + 4);
|
||||
int mask_offset = 2;
|
||||
int payloadlen = bufflen;
|
||||
if (payloadlen < 126) {
|
||||
szbuff[1] = payloadlen | 0x80;
|
||||
mask_offset = 2;
|
||||
} else if (payloadlen <= 0xFFFF) {
|
||||
szbuff[1] = 126 | 0x80;
|
||||
szbuff[2] = (payloadlen >> 8) & 0xFF;
|
||||
szbuff[3] = payloadlen & 0xFF;
|
||||
mask_offset = 4;
|
||||
} else {
|
||||
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)
|
||||
|
@ -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)
|
||||
{
|
||||
if (offset + 2 > (int)buflen) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user