diff options
author | Adam <Adam@anope.org> | 2013-08-25 02:59:54 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2013-08-25 04:48:43 -0400 |
commit | 847cceaba350444510b37f685d51fdfc584b1fd2 (patch) | |
tree | fc43ca0715569f88baa342a6a5b6da27032f2b64 /src/servers.cpp | |
parent | 09046e3c993cfca2798c11daf294f8c52bb3a785 (diff) |
Create persistent channels on startup, which used to work and got lost somewhere
Fix some oddities with using persistent channels with no botserv
Send list modes to uplink when bursting
Fix issues with persist + keepmodes
Fix /os modes clear all not clearing all status modes
Fix operwall on ratbox/plexus
Dont apply mlock in SetCorrectModes since that just recursively calls itself unncessarially
Change command logging to show the command name and not the service name
Diffstat (limited to 'src/servers.cpp')
-rw-r--r-- | src/servers.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/servers.cpp b/src/servers.cpp index c3ec328f9..d4c76a217 100644 --- a/src/servers.cpp +++ b/src/servers.cpp @@ -109,11 +109,20 @@ Server::Server(Server *up, const Anope::string &sname, unsigned shops, const Ano for (channel_map::const_iterator it = ChannelList.begin(), it_end = ChannelList.end(); it != it_end; ++it) { Channel *c = it->second; + if (c->users.empty()) IRCD->SendChannel(c); else for (Channel::ChanUserList::const_iterator cit = c->users.begin(), cit_end = c->users.end(); cit != cit_end; ++cit) IRCD->SendJoin(cit->second->user, c, &cit->second->status); + + for (Channel::ModeList::const_iterator it2 = c->GetModes().begin(); it2 != c->GetModes().end(); ++it2) + { + ChannelMode *cm = ModeManager::FindChannelModeByName(it2->first); + if (!cm || cm->type != MODE_LIST) + continue; + ModeManager::StackerAdd(c->ci->WhoSends(), c, cm, true, it2->second); + } } } } |