summaryrefslogtreecommitdiff
path: root/protocols/Telegram/src/server.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Telegram/src/server.cpp')
-rw-r--r--protocols/Telegram/src/server.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/protocols/Telegram/src/server.cpp b/protocols/Telegram/src/server.cpp
index 8dede07c4c..8792000d59 100644
--- a/protocols/Telegram/src/server.cpp
+++ b/protocols/Telegram/src/server.cpp
@@ -17,18 +17,25 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdafx.h"
+void CMTProto::OnEndSession(td::ClientManager::Response&)
+{
+ m_bTerminated = true;
+}
+
void __cdecl CMTProto::ServerThread(void *)
{
- m_bRunning = true;
m_bTerminated = m_bAuthorized = false;
+ m_pClientMmanager = std::make_unique<td::ClientManager>();
+ m_iClientId = m_pClientMmanager->create_client_id();
+
SendQuery(new TD::getOption("version"));
while (!m_bTerminated) {
ProcessResponse(m_pClientMmanager->receive(1));
}
- m_bRunning = false;
+ m_pClientMmanager = std::move(nullptr);
}
void CMTProto::LogOut()
@@ -55,7 +62,11 @@ void CMTProto::OnLoggedIn()
ProtoBroadcastAck(0, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)m_iStatus, m_iDesiredStatus);
m_iStatus = m_iDesiredStatus;
- SendQuery(new TD::getChats(td::tl::unique_ptr<TD::chatListMain>(), 1000));
+ if (m_bUnregister) {
+ SendQuery(new TD::terminateSession());
+ SendQuery(new TD::logOut(), &CMTProto::OnEndSession);
+ }
+ else SendQuery(new TD::getChats(td::tl::unique_ptr<TD::chatListMain>(), 1000));
}
///////////////////////////////////////////////////////////////////////////////
@@ -254,7 +265,6 @@ void CMTProto::ProcessGroups(TD::updateChatFilters *pObj)
Clist_GroupRename(oldGroup, wszFullGroup);
setWString(szSetting, wszNewValue);
}
-
}
}