From b3577d87299038380a0e7d309801afc78cba1987 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 12 Mar 2023 20:36:48 +0300 Subject: =?UTF-8?q?fixes=20#3419=20(ICQ:=20=D0=B2=20=D0=B6=D1=83=D1=80?= =?UTF-8?q?=D0=BD=D0=B0=D0=BB=D0=B5=20=D0=B3=D1=80=D1=83=D0=BF=D1=87=D0=B0?= =?UTF-8?q?=D1=82=D0=B0=20=D0=BD=D0=B5=20=D0=B2=D0=B8=D0=B4=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=B8=D1=81=D1=85=D0=BE=D0=B4=D1=8F=D1=89=D0=B8=D0=B5=20=D1=80?= =?UTF-8?q?=D0=B5=D0=BF=D0=BB=D0=B8=D0=BA=D0=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocols/ICQ-WIM/src/server.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'protocols') diff --git a/protocols/ICQ-WIM/src/server.cpp b/protocols/ICQ-WIM/src/server.cpp index 6780daad1e..918ee2d119 100644 --- a/protocols/ICQ-WIM/src/server.cpp +++ b/protocols/ICQ-WIM/src/server.cpp @@ -73,9 +73,11 @@ MCONTACT CIcqProto::CheckOwnMessage(const CMStringA &reqId, const CMStringA &msg if (pOwn == nullptr) return 0; - ProtoBroadcastAck(pOwn->m_hContact, ACKTYPE_MESSAGE, ACKRESULT_SUCCESS, (HANDLE)pOwn->m_msgid, (LPARAM)msgId.c_str()); - MCONTACT ret = pOwn->m_hContact; + + if (!Contact::IsGroupChat(ret)) + ProtoBroadcastAck(ret, ACKTYPE_MESSAGE, ACKRESULT_SUCCESS, (HANDLE)pOwn->m_msgid, (LPARAM)msgId.c_str()); + if (bRemove) { mir_cslock lck(m_csOwnIds); m_arOwnIds.remove(pOwn); @@ -471,12 +473,16 @@ void CIcqProto::ParseMessage(MCONTACT hContact, __int64 &lastMsgId, const JSONNo } } - // skip own messages, just set the server msgid + // process our own messages CMStringA reqId(it["reqId"].as_mstring()); if (CheckOwnMessage(reqId, szMsgId, true)) { debugLogA("Skipping our own message %s", szMsgId.c_str()); - return; + if (!Contact::IsGroupChat(hContact)) // prevent duplicates in private chats + return; + bIsOutgoing = bCreateRead = true; } + else if (Contact::IsGroupChat(hContact)) + bCreateRead = true; // ignore duplicates MEVENT hDbEvent = db_event_getById(m_szModuleName, szMsgId); -- cgit v1.2.3