diff -r a8f7dc0a56cb -r faf534be8ff0 mcabber/src/jabglue.c --- a/mcabber/src/jabglue.c Mon May 02 14:18:55 2005 +0000 +++ b/mcabber/src/jabglue.c Mon May 02 20:31:01 2005 +0000 @@ -159,8 +159,8 @@ xmlnode x, z; char *cid; - if (!online) - return; + if (!online) return; + if (jc && jc->state == JCONN_STATE_CONNECTING) { jab_start(jc); return; @@ -213,8 +213,7 @@ { xmlnode x; - if (!online) - return; + if (!online) return; x = jutil_presnew(JPACKET__UNKNOWN, 0, 0); @@ -271,6 +270,11 @@ //sendvisibility(); ??? + // We'll need to update the roster if we switch to/from offline because + // we don't know the presences of buddies when offline... + if (mystatus == offline || st == offline) + update_roster = TRUE; + hk_mystatuschange(0, mystatus, st); mystatus = st; } @@ -443,6 +447,8 @@ online = FALSE; mystatus = offline; + roster_free(); + update_roster = TRUE; if (previous_state != JCONN_STATE_OFF) { scr_LogPrint("+ JCONN_STATE_OFF");