free(chan->rejoin_array);
chan->flags &= ~CHANFLAG_REJOINING;
}
- } else if(chan->usercount == 1 && isUserOnChan(user, chan)) {
+ } else if(isUserOnChan(user, chan)) { //user is already in the channel? ^^
//first bot rejoined
+ chan->flags &= ~CHANFLAG_RECEIVED_USERLIST;
struct ChanUser *chanuser = getChanUser(user, chan);
- chanuser->flags &= ~CHANUSERFLAG_VOICED;
- chanuser->flags |= CHANUSERFLAG_OPPED;
+ get_userlist_with_invisible(chan, 0, got_channel_userlist, chanuser);
}
DESYNCHRONIZE(cache_sync);
return 1;
}
else if(keep_channel && (chan->flags & CHANFLAG_REJOINING) && chan->usercount == 1) {
//bot is alone... rejoin!
- putsock(client, "PART %s :magic hop", chan->name);
- putsock(client, "JOIN %s", chan->name);
+ struct ClientSocket *bot;
+ //find the last bot in the channel
+ for(bot = getBots(SOCKET_FLAG_READY, NULL); bot; bot = getBots(SOCKET_FLAG_READY, bot)) {
+ if(bot->user == chan->chanbot) {
+ putsock(bot, "PART %s :magic hop", chan->name);
+ putsock(bot, "JOIN %s", chan->name);
+ }
+ }
}
DESYNCHRONIZE(cache_sync);
return 1;