I believe Anope has a bug that needs to be fixed in regards to holding channel modes on registered channels.
When a channel is empty, the channel's modes revert back to their default values (generally only +nt). The modes that you have set in chanserv through MLOCK are only applied AFTER a user a rejoined the channel.
This creates issues in all sorts of examples.
Take for instances a channel that a user created and registered to only allow secured (SSL connected) users to join. (UnrealIRCd) In chanserv, I register the channel and I set a MLOCK for +z. While the mode is in place, only SSL connected users can join the channel as it should be. However, if the channel were to become empty, the mode +z is lost, and any user regardless of their connection can join the channel. It is only AFTER the user has joined the channel that mode +z is placed back on the channel and this prevents nothing.
The same can be said of a channel in which it has been MLOCK'd to have +O so only IRCops can join. If the channel becomes empty, any regular user can join initially, and then AFTER the user is there, is mode +O placed back on the channel.
Why is Anope not maintaining channel modes even when the channel is empty? Isn't this one of the primary reasons for having services?
Also, please view the discussion and troubleshooting thread we went through on the UnrealIRCd forums before bringing it here.
http://forums.unrealircd.com/viewtopic.php?t=3033[Edited on 15-2-2006 by whoaboy]