void lm_sasl_free (LmSASL *sasl) { g_return_if_fail (sasl != NULL); g_free (sasl->username); g_free (sasl->password); g_free (sasl->server); if (sasl->features_cb) { lm_connection_unregister_message_handler (sasl->connection, sasl->features_cb, LM_MESSAGE_TYPE_STREAM_FEATURES); } if (sasl->challenge_cb) { lm_connection_unregister_message_handler (sasl->connection, sasl->challenge_cb, LM_MESSAGE_TYPE_CHALLENGE); } if (sasl->success_cb) { lm_connection_unregister_message_handler (sasl->connection, sasl->success_cb, LM_MESSAGE_TYPE_SUCCESS); } if (sasl->failure_cb) { lm_connection_unregister_message_handler (sasl->connection, sasl->failure_cb, LM_MESSAGE_TYPE_FAILURE); } g_free (sasl); }
bool XMPPAccountHandler::tearDown() { if (m_pConnection) { // unregister and destroy the message handler callbacks if (m_pPresenceHandler) { lm_connection_unregister_message_handler(m_pConnection, m_pPresenceHandler, LM_MESSAGE_TYPE_PRESENCE); lm_message_handler_unref(m_pPresenceHandler); m_pPresenceHandler = NULL; } if (m_pStreamErrorHandler) { lm_connection_unregister_message_handler(m_pConnection, m_pStreamErrorHandler, LM_MESSAGE_TYPE_STREAM_ERROR); lm_message_handler_unref(m_pStreamErrorHandler); m_pStreamErrorHandler = NULL; } if (m_pChatHandler) { lm_connection_unregister_message_handler(m_pConnection, m_pChatHandler, LM_MESSAGE_TYPE_MESSAGE); lm_message_handler_unref(m_pChatHandler); m_pChatHandler = NULL; } lm_connection_close(m_pConnection, NULL); lm_connection_unref(m_pConnection); m_pConnection = NULL; } m_bLoggedIn = false; return true; }