void MinecraftDynmapProto::SignOffWorker(void*) { ScopedLock s(signon_lock_); SetEvent(events_loop_event_); m_cookie.clear(); m_title.clear(); m_server.clear(); m_timestamp.clear(); int old_status = m_iStatus; m_iStatus = ID_STATUS_OFFLINE; Netlib_Shutdown(hEventsConnection); OnLeaveChat(NULL, NULL); delSetting("LogonTS"); ProtoBroadcastAck(0, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)old_status, m_iStatus); //SetAllContactStatuses(ID_STATUS_OFFLINE); //ToggleStatusMenuItems(false); if (hConnection) Netlib_CloseHandle(hConnection); hConnection = NULL; if (hEventsConnection) Netlib_CloseHandle(hEventsConnection); hEventsConnection = NULL; }
void avatars_server_connection::shutdownConnection() { stopThread = TRUE; mir_cslock l(localSeqMutex); if (hConnection) Netlib_Shutdown(hConnection); }
void CAimProto::shutdown_file_transfers(void) { for (int i = 0; i < m_ft_list.getCount(); ++i) { file_transfer& ft = m_ft_list[i]; if (ft.hConn) Netlib_Shutdown(ft.hConn); } }
void CAimProto::shutdown_chat_conn(void) { for(int i=0; i<chat_rooms.getCount(); ++i) { chat_list_item& item = chat_rooms[i]; if (item.hconn) { aim_sendflap(item.hconn,0x04,0,NULL,item.seqno); Netlib_Shutdown(item.hconn); } } }
void __cdecl CMsnProto::msn_keepAliveThread(void*) { bool keepFlag = true; hKeepAliveThreadEvt = CreateEvent(NULL, FALSE, FALSE, NULL); msnPingTimeout = 45; while (keepFlag) { switch (WaitForSingleObject(hKeepAliveThreadEvt, msnPingTimeout * 1000)) { case WAIT_TIMEOUT: keepFlag = msnNsThread != NULL; if (usingGateway) msnPingTimeout = 45; else { msnPingTimeout = 20; keepFlag = keepFlag && (lastMsgId?msnNsThread->sendPacketPayload("PNG", "CON", "\bLast-Msg-Id: %I64u\r\n\r\n", lastMsgId): (msnRegistration?msnNsThread->sendPacketPayload("PNG", "CON", "\b\r\n"): msnNsThread->sendPacket("PNG", "CON 0"))); } #ifdef OBSOLETE p2p_clearDormantSessions(); #endif if (hHttpsConnection && (clock() - mHttpsTS) > 60 * CLOCKS_PER_SEC) { HANDLE hConn = hHttpsConnection; hHttpsConnection = NULL; Netlib_Shutdown(hConn); } if (mStatusMsgTS && (clock() - mStatusMsgTS) > 60 * CLOCKS_PER_SEC) { mStatusMsgTS = 0; ForkThread(&CMsnProto::msn_storeProfileThread, NULL); } if (MyOptions.netId!=NETID_SKYPE && MSN_RefreshOAuthTokens(true)) ForkThread(&CMsnProto::msn_refreshOAuthThread, msnNsThread); break; case WAIT_OBJECT_0: keepFlag = msnPingTimeout > 0; break; default: keepFlag = false; break; } } CloseHandle(hKeepAliveThreadEvt); hKeepAliveThreadEvt = NULL; debugLogA("Closing keep-alive thread"); }
void CIcqProto::icq_serverDisconnect(BOOL bBlock) { if (hServerConn) { NetLog_Server("Server shutdown requested"); Netlib_Shutdown(hServerConn); if (serverThreadHandle) { // Not called from network thread? if (bBlock && GetCurrentThreadId() != serverThreadId) while (ICQWaitForSingleObject(serverThreadHandle, INFINITE) != WAIT_OBJECT_0); CloseHandle(serverThreadHandle); serverThreadHandle = NULL; } } }
int __cdecl CAimProto::FileCancel(MCONTACT hContact, HANDLE hTransfer) { file_transfer *ft = (file_transfer*)hTransfer; if (!ft_list.find_by_ft(ft)) return 0; debugLogA("We are cancelling a file transfer."); aim_chat_deny(hServerConn, seqno, ft->sn, ft->icbm_cookie); if (ft->hConn) { Netlib_Shutdown(ft->hConn); SetEvent(ft->hResumeEvent); } else ft_list.remove_by_ft(ft); return 0; }
void OmegleProto::SignOff(void*) { ScopedLock s(signon_lock_); int old_status = m_iStatus; m_iStatus = ID_STATUS_OFFLINE; Netlib_Shutdown(facy.hEventsConnection); OnLeaveChat(NULL, NULL); delSetting("LogonTS"); ProtoBroadcastAck(0, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)old_status, m_iStatus); //SetAllContactStatuses( ID_STATUS_OFFLINE ); //ToggleStatusMenuItems(false); if (facy.hEventsConnection) Netlib_CloseHandle(facy.hEventsConnection); facy.hEventsConnection = NULL; }
int CAimProto::OnGCEvent(WPARAM wParam,LPARAM lParam) { GCHOOK *gch = (GCHOOK*) lParam; if (!gch) return 1; if (strcmp(gch->pDest->pszModule, m_szModuleName)) return 0; char* id = mir_t2a(gch->pDest->ptszID); chat_list_item* item = find_chat_by_id(id); if (item == NULL) return 0; switch (gch->pDest->iType) { case GC_SESSION_TERMINATE: aim_sendflap(item->hconn,0x04,0,NULL,item->seqno); Netlib_Shutdown(item->hconn); break; case GC_USER_MESSAGE: if (gch->ptszText && _tcslen(gch->ptszText)) { char* msg = mir_utf8encodeT(gch->ptszText); aim_chat_send_message(item->hconn, item->seqno, msg); mir_free(msg); } break; case GC_USER_CHANMGR: DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_CHATROOM_INVITE), NULL, invite_to_chat_dialog, LPARAM(new invite_chat_param(item->id, this))); break; case GC_USER_PRIVMESS: { char* sn = mir_t2a(gch->ptszUID); HANDLE hContact = contact_from_sn(sn); mir_free(sn); CallService(MS_MSG_SENDMESSAGE, (WPARAM)hContact, 0); } break; case GC_USER_LOGMENU: switch(gch->dwData) { case 10: DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_CHATROOM_INVITE), NULL, invite_to_chat_dialog, LPARAM(new invite_chat_param(item->id, this))); break; case 20: chat_leave(id); break; } break; case GC_USER_NICKLISTMENU: { char *sn = mir_t2a(gch->ptszUID); HANDLE hContact = contact_from_sn(sn); mir_free(sn); switch (gch->dwData) { case 10: CallService(MS_USERINFO_SHOWDIALOG, (WPARAM)hContact, 0); break; case 20: CallService(MS_HISTORY_SHOWCONTACTHISTORY, (WPARAM)hContact, 0); break; case 110: chat_leave(id); break; } } break; case GC_USER_TYPNOTIFY: break; } mir_free(id); return 0; }
void CSkypeProto::ShutdownConnections() { Netlib_Shutdown(m_pollingConnection); Netlib_Shutdown(m_TrouterConnection); //Netlib_Shutdown(m_hNetlibUser); }
void FacebookProto::ChangeStatus(void*) { ScopedLock s(signon_lock_); ScopedLock b(facy.buddies_lock_); int new_status = m_iDesiredStatus; int old_status = m_iStatus; if (new_status == ID_STATUS_OFFLINE) { // Logout debugLogA("### Beginning SignOff process"); m_signingOut = true; SetEvent(update_loop_lock_); // Shutdown and close channel handle Netlib_Shutdown(facy.hMsgCon); if (facy.hMsgCon) Netlib_CloseHandle(facy.hMsgCon); facy.hMsgCon = NULL; // Turn off chat on Facebook if (getByte(FACEBOOK_KEY_DISCONNECT_CHAT, DEFAULT_DISCONNECT_CHAT)) facy.chat_state(false); facy.logout(); OnLeaveChat(NULL, NULL); SetAllContactStatuses(ID_STATUS_OFFLINE); ToggleStatusMenuItems(false); delSetting(FACEBOOK_KEY_LOGON_TS); facy.chat_traceid_.clear(); facy.chat_sticky_num_.clear(); facy.chat_sticky_pool_.clear(); facy.chat_msgs_recv_ = 0; facy.chat_req_ = 0; facy.clear_cookies(); facy.clear_notifications(); facy.clear_chatrooms(); facy.clear_readers(); facy.buddies.clear(); facy.messages_ignore.clear(); facy.messages_timestamp.clear(); facy.pages.clear(); facy.typers.clear(); // Clear thread/user id caches? /* Right now it's commented out because it's not really needed to erase - maybe only when user changes login/pass in same account, but even then it shouldn't cause problems facy.thread_id_to_user_id.clear(); facy.chat_id_to_hcontact.clear(); facy.user_id_to_hcontact.clear(); */ // Close connection handle if (facy.hFcbCon) Netlib_CloseHandle(facy.hFcbCon); facy.hFcbCon = NULL; m_iStatus = facy.self_.status_id = ID_STATUS_OFFLINE; ProtoBroadcastAck(0, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)old_status, m_iStatus); m_signingOut = false; debugLogA("### SignOff complete"); return; } else if (old_status == ID_STATUS_OFFLINE) { // Login SYSTEMTIME t; GetLocalTime(&t); debugLogA("[%d.%d.%d] Using Facebook Protocol RM %s", t.wDay, t.wMonth, t.wYear, __VERSION_STRING_DOTS); debugLogA("*** Beginning SignOn process"); m_enableChat = getBool(FACEBOOK_KEY_ENABLE_CHATS, DEFAULT_ENABLE_CHATS); m_iStatus = facy.self_.status_id = ID_STATUS_CONNECTING; ProtoBroadcastAck(0, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)old_status, m_iStatus); ResetEvent(update_loop_lock_); // Workaround for not working "mbasic." for some users - reset this flag at every login facy.mbasicWorks = true; if (NegotiateConnection() && facy.home() && facy.reconnect()) { // Load all friends ProcessFriendList(NULL); // Process friendship requests ForkThread(&FacebookProto::ProcessFriendRequests, NULL); // Sync threads, get messages - or get unread messages if (getBool(FACEBOOK_KEY_LOGIN_SYNC, DEFAULT_LOGIN_SYNC)) ForkThread(&FacebookProto::SyncThreads, NULL); else ForkThread(&FacebookProto::ProcessUnreadMessages, NULL); // Get notifications ForkThread(&FacebookProto::ProcessNotifications, NULL); // Load pages for post status dialog ForkThread(&FacebookProto::ProcessPages, NULL); // Load on this day posts if (getByte(FACEBOOK_KEY_EVENT_ON_THIS_DAY_ENABLE, DEFAULT_EVENT_ON_THIS_DAY_ENABLE)) ForkThread(&FacebookProto::ProcessOnThisDay, NULL); setDword(FACEBOOK_KEY_LOGON_TS, (DWORD)time(NULL)); ForkThread(&FacebookProto::UpdateLoop, NULL); ForkThread(&FacebookProto::MessageLoop, NULL); if (getByte(FACEBOOK_KEY_SET_MIRANDA_STATUS, DEFAULT_SET_MIRANDA_STATUS)) ForkThread(&FacebookProto::SetAwayMsgWorker, NULL); } else { ProtoBroadcastAck(0, ACKTYPE_STATUS, ACKRESULT_FAILED, (HANDLE)old_status, m_iStatus); if (facy.hFcbCon) Netlib_CloseHandle(facy.hFcbCon); facy.hFcbCon = NULL; facy.clear_cookies(); // Set to offline m_iStatus = m_iDesiredStatus = facy.self_.status_id = ID_STATUS_OFFLINE; ProtoBroadcastAck(0, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)old_status, m_iStatus); debugLogA("*** SignOn failed"); return; } ToggleStatusMenuItems(true); debugLogA("*** SignOn complete"); } m_invisible = (new_status == ID_STATUS_INVISIBLE); // Remember time of switching to away (and if we are idle already, use the idle time) m_awayTS = (new_status == ID_STATUS_AWAY ? (m_idleTS > 0 ? m_idleTS : ::time(NULL)) : 0); facy.chat_state(!m_invisible); ForkThread(&FacebookProto::ProcessBuddyList, NULL); m_iStatus = facy.self_.status_id = new_status; ProtoBroadcastAck(0, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)old_status, m_iStatus); debugLogA("*** ChangeStatus complete"); }
void WASocketConnection::forceShutdown() { Netlib_Shutdown(this->hConn); }
int ServicesPreShutdown(WPARAM wParam, LPARAM lParam) { Netlib_Shutdown(hNetlibHttp); return 0; }
int CSteamProto::OnPreShutdown(WPARAM, LPARAM) { Netlib_Shutdown(this->m_hNetlibUser); this->m_hNetlibUser = NULL; return 0; }
int TwitterProto::OnPreShutdown(WPARAM, LPARAM) { Netlib_Shutdown(m_hNetlibUser); Netlib_Shutdown(hAvatarNetlib_); return 0; }