static void joi_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) { MsnSession *session; PurpleAccount *account; PurpleConnection *gc; MsnSwitchBoard *swboard; const char *passport; passport = cmd->params[0]; session = cmdproc->session; account = session->account; gc = account->gc; swboard = cmdproc->data; msn_switchboard_add_user(swboard, passport); process_queue(swboard); if (!session->http_method) send_clientcaps(swboard); if (swboard->closed) msn_switchboard_close(swboard); }
void msn_session_disconnect(MsnSession *session) { g_return_if_fail(session != NULL); g_return_if_fail(session->connected); session->connected = FALSE; while (session->switches != NULL) msn_switchboard_close(session->switches->data); if (session->notification != NULL) msn_notification_close(session->notification); }
static void swboard_error_helper(MsnSwitchBoard *swboard, int reason, const char *passport) { g_return_if_fail(swboard != NULL); purple_debug_warning("msn", "Error: Unable to call the user %s for reason %i\n", passport ? passport : "(null)", reason); /* TODO: if current_users > 0, this is probably a chat and an invite failed, * we should report that in the chat or something */ if (swboard->current_users == 0) { swboard->error = reason; msn_switchboard_close(swboard); } }
void msn_switchboard_release(MsnSwitchBoard *swboard, MsnSBFlag flag) { g_return_if_fail(swboard != NULL); swboard->flag &= ~flag; if (flag == MSN_SB_FLAG_IM) /* Forget any conversation that used to be associated with this * swboard. */ swboard->conv = NULL; if (swboard->flag == 0) /* Nothing else is using this switchboard, so close it */ msn_switchboard_close(swboard); }
gboolean msn_switchboard_release(MsnSwitchBoard *swboard, MsnSBFlag flag) { g_return_val_if_fail(swboard != NULL, FALSE); swboard->flag &= ~flag; if (flag == MSN_SB_FLAG_IM) /* Forget any conversation that used to be associated with this * swboard. */ swboard->conv = NULL; if (swboard->flag == 0) { msn_switchboard_close(swboard); return TRUE; } return FALSE; }
void msn_session_disconnect(MsnSession *session) { g_return_if_fail(session != NULL); if (!session->connected) return; if (session->login_timeout) { purple_timeout_remove(session->login_timeout); session->login_timeout = 0; } session->connected = FALSE; while (session->switches != NULL) msn_switchboard_close(session->switches->data); if (session->notification != NULL) msn_notification_close(session->notification); }
static void joi_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) { MsnSession *session; MsnSwitchBoard *swboard; const char *passport; passport = cmd->params[0]; session = cmdproc->session; swboard = cmdproc->data; msn_switchboard_add_user(swboard, passport); msn_sbconn_process_queue(swboard); if (!session->http_method) send_clientcaps(swboard); if (swboard->closed) msn_switchboard_close(swboard); }