From a7bf177e6e4aedcaafca186b50e6666788e45f98 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 10 Feb 2023 19:46:31 +0300 Subject: ME_DB_EVENT_MARKED_READ: recursion prevention --- protocols/VKontakte/src/misc.cpp | 2 +- protocols/VKontakte/src/vk_messages.cpp | 10 +--------- protocols/VKontakte/src/vk_proto.cpp | 1 - protocols/VKontakte/src/vk_proto.h | 2 +- 4 files changed, 3 insertions(+), 12 deletions(-) (limited to 'protocols/VKontakte') diff --git a/protocols/VKontakte/src/misc.cpp b/protocols/VKontakte/src/misc.cpp index bd7acbac2d..351dbebe48 100644 --- a/protocols/VKontakte/src/misc.cpp +++ b/protocols/VKontakte/src/misc.cpp @@ -816,7 +816,7 @@ void CVkProto::MarkDialogAsRead(MCONTACT hContact) while (hDBEvent != 0) { DBEVENTINFO dbei = {}; if (!db_event_get(hDBEvent, &dbei) && !mir_strcmp(m_szModuleName, dbei.szModule)) { - db_event_markRead(hContact, hDBEvent); + db_event_markRead(hContact, hDBEvent, true); g_clistApi.pfnRemoveEvent(hMContact, hDBEvent); if (hContact != hMContact) g_clistApi.pfnRemoveEvent(hContact, hDBEvent); diff --git a/protocols/VKontakte/src/vk_messages.cpp b/protocols/VKontakte/src/vk_messages.cpp index 2fde56a1d3..78ad3fd307 100644 --- a/protocols/VKontakte/src/vk_messages.cpp +++ b/protocols/VKontakte/src/vk_messages.cpp @@ -131,20 +131,12 @@ void CVkProto::OnSendMessage(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) ///////////////////////////////////////////////////////////////////////////////////////// -int CVkProto::OnDbEventRead(WPARAM, LPARAM hDbEvent) +void CVkProto::OnMarkRead(MCONTACT hContact, MEVENT) { debugLogA("CVkProto::OnDbEventRead"); - MCONTACT hContact = db_event_getContact(hDbEvent); - if (!hContact) - return 0; - - CMStringA szProto(Proto_GetBaseAccountName(hContact)); - if (szProto.IsEmpty() || szProto != m_szModuleName) - return 0; if (m_vkOptions.iMarkMessageReadOn == MarkMsgReadOn::markOnRead) MarkMessagesRead(hContact); - return 0; } INT_PTR CVkProto::SvcMarkMessagesAsRead(WPARAM hContact, LPARAM) diff --git a/protocols/VKontakte/src/vk_proto.cpp b/protocols/VKontakte/src/vk_proto.cpp index b712b83eb2..9e7a621593 100644 --- a/protocols/VKontakte/src/vk_proto.cpp +++ b/protocols/VKontakte/src/vk_proto.cpp @@ -105,7 +105,6 @@ void CVkProto::OnModulesLoaded() // Other hooks HookProtoEvent(ME_MSG_WINDOWEVENT, &CVkProto::OnProcessSrmmEvent); - HookProtoEvent(ME_DB_EVENT_MARKED_READ, &CVkProto::OnDbEventRead); HookProtoEvent(ME_DB_CONTACT_SETTINGCHANGED, &CVkProto::OnDbSettingChanged); //Sounds diff --git a/protocols/VKontakte/src/vk_proto.h b/protocols/VKontakte/src/vk_proto.h index 43936e8c5b..4c9cb67a08 100644 --- a/protocols/VKontakte/src/vk_proto.h +++ b/protocols/VKontakte/src/vk_proto.h @@ -69,6 +69,7 @@ struct CVkProto : public PROTO void OnBuildProtoMenu() override; void OnContactDeleted(MCONTACT) override; + void OnMarkRead(MCONTACT, MEVENT) override; void OnModulesLoaded() override; void OnShutdown() override; @@ -252,7 +253,6 @@ private: //==== Hooks ========================================================================= int __cdecl OnProcessSrmmEvent(WPARAM, LPARAM); - int __cdecl OnDbEventRead(WPARAM, LPARAM); int __cdecl OnDbSettingChanged(WPARAM, LPARAM); //==== Search ======================================================================== -- cgit v1.2.3