diff options
-rw-r--r-- | irc_channel.c | 8 | ||||
-rw-r--r-- | irc_im.c | 3 |
2 files changed, 6 insertions, 5 deletions
diff --git a/irc_channel.c b/irc_channel.c index acae85a7..3de68e34 100644 --- a/irc_channel.c +++ b/irc_channel.c @@ -444,10 +444,10 @@ void irc_channel_auto_joins(irc_t *irc, account_t *acc) can only auto-join them if their account is online. */ char *acc_s; - if (!aj || (ic->flags & IRC_CHANNEL_JOINED)) { - /* Only continue if this one's marked as auto_join - or if we're in it already. (Possible if the - client auto-rejoined it before identyfing.) */ + if (!aj && !(ic->flags & IRC_CHANNEL_JOINED)) { + /* Only proceed if this one's marked as auto_join + or if we're in it already. (Very likely the IRC + client auto-(re)joining at reconnect time.) */ continue; } else if (!(acc_s = set_getstr(&ic->set, "account"))) { continue; @@ -835,7 +835,8 @@ static gboolean bee_irc_channel_chat_join(irc_channel_t *ic) if ((acc_s = set_getstr(&ic->set, "account")) && (room = set_getstr(&ic->set, "room")) && (acc = account_get(ic->irc->b, acc_s)) && - acc->ic && acc->prpl->chat_join) { + acc->ic && (acc->ic->flags & OPT_LOGGED_IN) && + acc->prpl->chat_join) { char *nick; if (!(nick = set_getstr(&ic->set, "nick"))) { |