# HG changeset patch # User Mark Doliner # Date 1214438512 0 # Node ID cc1d617308adabdbc42aaee206a578577575605a # Parent 6775c08060b9cf0e095e47dc98661e1f74644d4a Revert my revision ebc5ac66e700f6c67e30069ee2ebd4bb61f82ec8 because we think it's causing accounts to not become unidle when they're disconnected or something. And change silc to not crash if the set_idle prpl function is called when the gc is not connected. I'm sure we really only need to check whether one of the silc structures is null, but I don't have a backtrace on hand and I don't remember which one it was crashing on, so I'm just going to check all of them. diff -r 6775c08060b9 -r cc1d617308ad libpurple/idle.c --- a/libpurple/idle.c Mon Jun 23 15:33:44 2008 +0000 +++ b/libpurple/idle.c Thu Jun 26 00:01:52 2008 +0000 @@ -252,7 +252,7 @@ PurpleAccount *account; account = purple_connection_get_account(gc); - idled_accts = g_list_remove(idled_accts, account); + set_account_unidle(account); } static void diff -r 6775c08060b9 -r cc1d617308ad libpurple/protocols/silc/buddy.c --- a/libpurple/protocols/silc/buddy.c Mon Jun 23 15:33:44 2008 +0000 +++ b/libpurple/protocols/silc/buddy.c Thu Jun 26 00:01:52 2008 +0000 @@ -1434,13 +1434,25 @@ void silcpurple_idle_set(PurpleConnection *gc, int idle) { - SilcPurple sg = gc->proto_data; - SilcClient client = sg->client; - SilcClientConnection conn = sg->conn; + SilcPurple sg; + SilcClient client; + SilcClientConnection conn; SilcAttributeObjService service; const char *server; int port; + sg = gc->proto_data; + if (sg == NULL) + return; + + client = sg->client; + if (client == NULL) + return; + + conn = sg->conn; + if (conn == NULL) + return; + server = purple_account_get_string(sg->account, "server", "silc.silcnet.org"); port = purple_account_get_int(sg->account, "port", 706), diff -r 6775c08060b9 -r cc1d617308ad libpurple/protocols/silc10/buddy.c --- a/libpurple/protocols/silc10/buddy.c Mon Jun 23 15:33:44 2008 +0000 +++ b/libpurple/protocols/silc10/buddy.c Thu Jun 26 00:01:52 2008 +0000 @@ -1434,13 +1434,25 @@ void silcpurple_idle_set(PurpleConnection *gc, int idle) { - SilcPurple sg = gc->proto_data; - SilcClient client = sg->client; - SilcClientConnection conn = sg->conn; + SilcPurple sg; + SilcClient client; + SilcClientConnection conn; SilcAttributeObjService service; const char *server; int port; + sg = gc->proto_data; + if (sg == NULL) + return; + + client = sg->client; + if (client == NULL) + return; + + conn = sg->conn; + if (conn == NULL) + return; + server = purple_account_get_string(sg->account, "server", "silc.silcnet.org"); port = purple_account_get_int(sg->account, "port", 706),