summaryrefslogtreecommitdiff
path: root/protocols
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2021-04-22 20:18:57 +0300
committerGeorge Hazan <ghazan@miranda.im>2021-04-22 20:18:57 +0300
commit933b020956e5795dc58ca277293c4fa25f77751f (patch)
tree8f0843da81a1c283ce8a4cb29d9237aafdb538c6 /protocols
parent72656f183105508a65d952e8960bd2c2971ca1d5 (diff)
fixes & debug info for web socket data
Diffstat (limited to 'protocols')
-rw-r--r--protocols/WhatsAppWeb/src/server.cpp30
1 files changed, 11 insertions, 19 deletions
diff --git a/protocols/WhatsAppWeb/src/server.cpp b/protocols/WhatsAppWeb/src/server.cpp
index a75ffda4d2..14abb5ec33 100644
--- a/protocols/WhatsAppWeb/src/server.cpp
+++ b/protocols/WhatsAppWeb/src/server.cpp
@@ -343,10 +343,11 @@ bool WhatsAppProto::ServerThreadWorker()
}
offset = 0;
- debugLogA("Got packet: buffer = %d, opcode = %d, payloadSize = %d, final = %d, masked = %d", netbuf.length(), hdr.opCode, hdr.payloadSize, hdr.bIsFinal, hdr.bIsMasked);
+ debugLogA("Got packet: buffer = %d, opcode = %d, headerSize = %d, payloadSize = %d, final = %d, masked = %d",
+ netbuf.length(), hdr.opCode, hdr.headerSize, hdr.payloadSize, hdr.bIsFinal, hdr.bIsMasked);
+ // Netlib_Dump(m_hServerConn, netbuf.data(), netbuf.length(), false, 0);
// read all payloads from the current buffer, one by one
- size_t prevSize = 0;
while (true) {
MBinBuffer currPacket;
currPacket.assign(netbuf.data() + hdr.headerSize, hdr.payloadSize);
@@ -403,37 +404,28 @@ bool WhatsAppProto::ServerThreadWorker()
bExit = true; // simply reconnect, don't exit
break;
- case 9: // ping
- debugLogA("ping received");
- Netlib_Send(m_hServerConn, "?,,", 3, 0);
- break;
-
default:
Netlib_Dump(m_hServerConn, start, hdr.payloadSize, false, 0);
}
- if (hdr.bIsFinal)
- netbuf.remove(hdr.headerSize + hdr.payloadSize);
-
+ netbuf.remove(hdr.headerSize + hdr.payloadSize);
+ debugLogA("%d bytes removed from network buffer, %d bytes remain", hdr.headerSize + hdr.payloadSize, netbuf.length());
if (netbuf.length() == 0)
break;
// if we have not enough data for header, continue reading
- if (!WebSocket_InitHeader(hdr, netbuf.data(), netbuf.length()))
+ if (!WebSocket_InitHeader(hdr, netbuf.data(), netbuf.length())) {
+ debugLogA("not enough data for header, continue reading");
break;
+ }
// if we have not enough data for data, continue reading
- if (hdr.headerSize + hdr.payloadSize > netbuf.length())
- break;
-
- debugLogA("Got inner packet: buffer = %d, opcode = %d, headerSize = %d, payloadSize = %d, final = %d, masked = %d", netbuf.length(), hdr.opCode, hdr.headerSize, hdr.payloadSize, hdr.bIsFinal, hdr.bIsMasked);
- if (prevSize == netbuf.length()) {
- netbuf.remove(prevSize);
- debugLogA("dropping current packet, exiting");
+ if (hdr.headerSize + hdr.payloadSize > netbuf.length()) {
+ debugLogA("not enough place for data (%d+%d > %d), continue reading", hdr.headerSize, hdr.payloadSize, netbuf.length());
break;
}
- prevSize = netbuf.length();
+ debugLogA("Got inner packet: buffer = %d, opcode = %d, headerSize = %d, payloadSize = %d, final = %d, masked = %d", netbuf.length(), hdr.opCode, hdr.headerSize, hdr.payloadSize, hdr.bIsFinal, hdr.bIsMasked);
}
}