summaryrefslogtreecommitdiff
path: root/protocols/FacebookRM/src/connection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/FacebookRM/src/connection.cpp')
-rw-r--r--protocols/FacebookRM/src/connection.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/protocols/FacebookRM/src/connection.cpp b/protocols/FacebookRM/src/connection.cpp
index 79a0f5e03b..e2ebc70f56 100644
--- a/protocols/FacebookRM/src/connection.cpp
+++ b/protocols/FacebookRM/src/connection.cpp
@@ -36,6 +36,18 @@ void FacebookProto::ChangeStatus(void*)
SetEvent(update_loop_event);
+ // Shutdown and close channel handle
+ Netlib_Shutdown(facy.hChannelCon);
+ if (facy.hChannelCon)
+ Netlib_CloseHandle(facy.hChannelCon);
+ facy.hChannelCon = nullptr;
+
+ // Shutdown and close messages handle
+ Netlib_Shutdown(facy.hMessagesCon);
+ if (facy.hMessagesCon)
+ Netlib_CloseHandle(facy.hMessagesCon);
+ facy.hMessagesCon = nullptr;
+
// Turn off chat on Facebook
if (getByte(FACEBOOK_KEY_DISCONNECT_CHAT, DEFAULT_DISCONNECT_CHAT))
facy.chat_state(false);
@@ -62,6 +74,11 @@ void FacebookProto::ChangeStatus(void*)
facy.pages.clear();
facy.typers.clear();
+ // Close connection handle
+ if (facy.hFcbCon)
+ Netlib_CloseHandle(facy.hFcbCon);
+ facy.hFcbCon = nullptr;
+
m_iStatus = facy.self_.status_id = ID_STATUS_OFFLINE;
ProtoBroadcastAck(0, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)old_status, m_iStatus);
@@ -118,6 +135,10 @@ void FacebookProto::ChangeStatus(void*)
else {
ProtoBroadcastAck(0, ACKTYPE_STATUS, ACKRESULT_FAILED, (HANDLE)old_status, m_iStatus);
+ if (facy.hFcbCon)
+ Netlib_CloseHandle(facy.hFcbCon);
+ facy.hFcbCon = nullptr;
+
facy.clear_cookies();
// Set to offline