summaryrefslogtreecommitdiff
path: root/protocols/WhatsAppWeb/src/utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/WhatsAppWeb/src/utils.cpp')
-rw-r--r--protocols/WhatsAppWeb/src/utils.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/protocols/WhatsAppWeb/src/utils.cpp b/protocols/WhatsAppWeb/src/utils.cpp
index 127ec33a45..4c8fb5d8ca 100644
--- a/protocols/WhatsAppWeb/src/utils.cpp
+++ b/protocols/WhatsAppWeb/src/utils.cpp
@@ -155,6 +155,14 @@ int WhatsAppProto::WSSendNode(WANode &node, WA_PKT_HANDLER pHandler)
if (m_hServerConn == nullptr)
return 0;
+ if (pHandler != nullptr) {
+ CMStringA id(generateMessageId());
+ node.addAttr("id", id);
+
+ mir_cslock lck(m_csPacketQueue);
+ m_arPacketQueue.insert(new WARequest(id, pHandler));
+ }
+
CMStringA szText;
node.print(szText);
debugLogA("Sending binary node:\n%s", szText.c_str());
@@ -162,11 +170,6 @@ int WhatsAppProto::WSSendNode(WANode &node, WA_PKT_HANDLER pHandler)
WAWriter writer;
writer.writeNode(&node);
- if (pHandler != nullptr) {
- mir_cslock lck(m_csPacketQueue);
- m_arPacketQueue.insert(new WARequest(node.getAttr("id"), pHandler));
- }
-
MBinBuffer encData = m_noise->encrypt(writer.body.data(), writer.body.length());
MBinBuffer payload = m_noise->encodeFrame(encData.data(), encData.length());
WebSocket_SendBinary(m_hServerConn, payload.data(), payload.length());