From 061a20a9cf305cf5fabe2a35b7d8a86eb8d6b154 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 22 Feb 2023 16:02:21 +0300 Subject: fictive functions removed --- src/mir_app/src/chat.h | 3 +-- src/mir_app/src/chat_manager.cpp | 24 +----------------------- src/mir_app/src/chat_svc.cpp | 17 ++++++++++++++--- 3 files changed, 16 insertions(+), 28 deletions(-) diff --git a/src/mir_app/src/chat.h b/src/mir_app/src/chat.h index a128e612be..d36a72af71 100644 --- a/src/mir_app/src/chat.h +++ b/src/mir_app/src/chat.h @@ -68,11 +68,10 @@ MODULEINFO* MM_FindModule(const char *pszModule); BOOL SM_AddEvent(SESSION_INFO *si, GCEVENT *gce, bool bIsHighlighted); BOOL SM_ChangeNick(SESSION_INFO *si, GCEVENT *gce); +void SM_FreeSession(SESSION_INFO *si, bool bRemoveContact = false); char* SM_GetUsers(SESSION_INFO *si); BOOL SM_GiveStatus(SESSION_INFO *si, const wchar_t *pszUID, const wchar_t *pszStatus); void SM_RemoveAll(void); -int SM_RemoveModule(const char *pszModule, bool removeContact); -int SM_RemoveSession(SESSION_INFO *si, bool removeContact); BOOL SM_RemoveUser(SESSION_INFO *si, const wchar_t *pszUID); BOOL SM_SetContactStatus(SESSION_INFO *si, const wchar_t *pszUID, uint16_t wStatus); BOOL SM_SetOffline(const char *pszModule, SESSION_INFO *si); diff --git a/src/mir_app/src/chat_manager.cpp b/src/mir_app/src/chat_manager.cpp index 74b3fa2a64..dc6e7aaa1b 100644 --- a/src/mir_app/src/chat_manager.cpp +++ b/src/mir_app/src/chat_manager.cpp @@ -163,7 +163,7 @@ static SESSION_INFO* SM_CreateSession(void) return new SESSION_INFO(); } -static void SM_FreeSession(SESSION_INFO *si, bool bRemoveContact = false) +void SM_FreeSession(SESSION_INFO *si, bool bRemoveContact) { if (g_clistApi.pfnGetEvent(si->hContact, 0)) g_clistApi.pfnRemoveEvent(si->hContact, GC_FAKE_EVENT); @@ -201,28 +201,6 @@ static void SM_FreeSession(SESSION_INFO *si, bool bRemoveContact = false) delete si; } -int SM_RemoveModule(const char *pszModule, bool removeContact) -{ - if (pszModule == nullptr) - return FALSE; - - for (auto &si : g_arSessions.rev_iter()) - if (si->iType != GCW_SERVER && !mir_strcmpi(si->pszModule, pszModule)) - SM_FreeSession(g_arSessions.removeItem(&si), removeContact); - - return TRUE; -} - -int SM_RemoveSession(SESSION_INFO *si, bool removeContact) -{ - if (si == nullptr) - return FALSE; - - g_arSessions.remove(si); - SM_FreeSession(si, removeContact); - return TRUE; -} - MIR_APP_DLL(SESSION_INFO*) Chat_Find(const wchar_t *pszID, const char *pszModule) { if (!pszID || !pszModule) diff --git a/src/mir_app/src/chat_svc.cpp b/src/mir_app/src/chat_svc.cpp index a1bf16f53c..0731fb09b4 100644 --- a/src/mir_app/src/chat_svc.cpp +++ b/src/mir_app/src/chat_svc.cpp @@ -379,9 +379,20 @@ struct ChatTerminateParam static INT_PTR __stdcall stubRoomTerminate(void *param) { ChatTerminateParam *p = (ChatTerminateParam*)param; - if (p->si) - return SM_RemoveSession(p->si, p->bRemoveContact); - return SM_RemoveModule(p->pszModule, p->bRemoveContact); + if (p->si) { + g_arSessions.remove(p->si); + SM_FreeSession(p->si, p->bRemoveContact); + } + else { + if (p->pszModule == nullptr) + return FALSE; + + // remove all sessions with matching module name + for (auto &si : g_arSessions.rev_iter()) + if (si->iType != GCW_SERVER && !mir_strcmpi(si->pszModule, p->pszModule)) + SM_FreeSession(g_arSessions.removeItem(&si), p->bRemoveContact); + } + return TRUE; } MIR_APP_DLL(int) Chat_Terminate(const char *szModule, bool bRemoveContact) -- cgit v1.2.3