# HG changeset patch # User Sadrul Habib Chowdhury # Date 1187853059 0 # Node ID f520bf6dd4bc469db3a3ced73cb41ae6b0c48ef1 # Parent d65ce3df5be2a5308043267ada2aab952a55b96d I think this fixes the auto-rejoin-after-auto-reconnect bug in finch. diff -r d65ce3df5be2 -r f520bf6dd4bc finch/gntblist.c --- a/finch/gntblist.c Thu Aug 23 07:05:03 2007 +0000 +++ b/finch/gntblist.c Thu Aug 23 07:10:59 2007 +0000 @@ -2139,20 +2139,29 @@ } } -static void -account_signed_on_cb(PurpleConnection *pc, gpointer null) +static gboolean +auto_join_chats(gpointer data) { PurpleBlistNode *node; + PurpleConnection *pc = data; + PurpleAccount *account = purple_connection_get_account(pc); for (node = purple_blist_get_root(); node; node = purple_blist_node_next(node, FALSE)) { if (PURPLE_BLIST_NODE_IS_CHAT(node)) { PurpleChat *chat = (PurpleChat*)node; - if (chat->account == purple_connection_get_account(pc) && + if (chat->account == account && purple_blist_node_get_bool(node, "gnt-autojoin")) serv_join_chat(purple_account_get_connection(chat->account), chat->components); } } + return FALSE; +} + +static void +account_signed_on_cb(PurpleConnection *gc, gpointer null) +{ + g_idle_add(auto_join_chats, gc); } static void toggle_pref_cb(GntMenuItem *item, gpointer n)