From 9eab007d5b0415bd24e78075808f14d1262aac5a Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Tue, 23 Aug 2011 15:48:55 +0200 Subject: [PATCH] Fix of previous commit --- backends/libpurple/main.cpp | 19 ++++++++++++++++--- spectrum/src/sample.cfg | 1 + 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/backends/libpurple/main.cpp b/backends/libpurple/main.cpp index 34f333fe..fa2c09b2 100644 --- a/backends/libpurple/main.cpp +++ b/backends/libpurple/main.cpp @@ -848,16 +848,29 @@ static PurpleConversationUiOps conversation_ui_ops = NULL }; +struct Dis { + std::string name; + std::string protocol; +}; + static gboolean disconnectMe(void *data) { - PurpleAccount *account = (PurpleAccount *) data; - np->handleLogoutRequest(np->m_accounts[account], purple_account_get_username(account)); + Dis *d = (Dis *) data; + PurpleAccount *account = purple_accounts_find(d->name.c_str(), d->protocol.c_str()); + delete d; + + if (account) { + np->handleLogoutRequest(np->m_accounts[account], purple_account_get_username(account)); + } return FALSE; } static void connection_report_disconnect(PurpleConnection *gc, PurpleConnectionError reason, const char *text){ PurpleAccount *account = purple_connection_get_account(gc); np->handleDisconnected(np->m_accounts[account], (int) reason, text ? text : ""); - purple_timeout_add(1, disconnectMe, account); + Dis *d = new Dis; + d->name = purple_account_get_username(account); + d->protocol = purple_account_get_protocol_id(account); + purple_timeout_add_seconds(10, disconnectMe, d); } static PurpleConnectionUiOps conn_ui_ops = diff --git a/spectrum/src/sample.cfg b/spectrum/src/sample.cfg index eda95692..9cb1e6bf 100644 --- a/spectrum/src/sample.cfg +++ b/spectrum/src/sample.cfg @@ -17,6 +17,7 @@ backend=../../backends/libpurple/spectrum_libpurple_backend #protocol=prpl-msn protocol=any #protocol=prpl-icq +idle_reconnect_time=10 [backend] #default_avatar=catmelonhead.jpg