static gboolean reconnect(void) { if(wantconnection && lm_connection_get_state(connection) == LM_CONNECTION_STATE_CLOSED) { xmpp_connect(); } return TRUE; } /* reconnect */
/*doc Loudmouth status Returns status connection. Possible return values are: <ul> <li><code>Loudmouth types CLOSED</code></li> <li><code>Loudmouth types OPENING</code></li> <li><code>Loudmouth types OPEN</code></li> <li><code>Loudmouth types AUTHENTICATING</code></li> <li><code>Loudmouth types AUTHENTICATED</code></li> </ul>*/ IoObject *IoLoudmouth_status(IoLoudmouth *self, IoObject *locals, IoMessage *m) { IoSeq *status = IOSYMBOL("unknown"); switch(lm_connection_get_state(LMCONN(self))) { case LM_CONNECTION_STATE_CLOSED: status = IOSYMBOL("closed"); break; case LM_CONNECTION_STATE_OPENING: status = IOSYMBOL("opening"); break; case LM_CONNECTION_STATE_OPEN: status = IOSYMBOL("open"); break; case LM_CONNECTION_STATE_AUTHENTICATING: status = IOSYMBOL("authenticating"); break; case LM_CONNECTION_STATE_AUTHENTICATED: status = IOSYMBOL("authenticated"); } return status; }
static void server_cleanup(XMPP_SERVER_REC *server) { if (!IS_XMPP_SERVER(server)) return; if (server->timeout_tag) g_source_remove(server->timeout_tag); if (lm_connection_get_state(server->lmconn) != LM_CONNECTION_STATE_CLOSED) lm_connection_close(server->lmconn, NULL); lm_connection_unref(server->lmconn); g_free(server->jid); g_free(server->user); g_free(server->domain); g_free(server->resource); g_free(server->ping_id); }
static void rd_cleanup(struct register_data *rd) { register_data = g_slist_remove(register_data, rd); g_free(rd->username); g_free(rd->domain); g_free(rd->password); g_free(rd->address); g_free(rd->id); if (rd->handler != NULL) { if (lm_message_handler_is_valid(rd->handler)) lm_message_handler_invalidate(rd->handler); lm_message_handler_unref(rd->handler); } if (lm_connection_get_state(rd->lmconn) != LM_CONNECTION_STATE_CLOSED) lm_connection_close(rd->lmconn, NULL); lm_connection_unref(rd->lmconn); g_free(rd); }
void xmpp_disconnect() { LmMessage *m; const gchar *conf_server = get_settings_str(SERVER); wantconnection = 0; if (connection == NULL) return; if (lm_connection_get_state(connection) == LM_CONNECTION_STATE_AUTHENTICATED) { m = lm_message_new_with_sub_type(NULL, LM_MESSAGE_TYPE_PRESENCE, LM_MESSAGE_SUB_TYPE_UNAVAILABLE); lm_connection_send(connection, m, NULL); } if(lm_connection_is_open(connection)) { ui_print("Closing connection to %s\n", conf_server); lm_connection_close(connection, NULL); g_printerr("Disconnected\n"); } lm_connection_unref(connection); connection = NULL; } /* xmpp_disconnect */