+ if (adding)
+ {
+ if (!channel->IsModeSet('z'))
+ {
+ if (IS_LOCAL(source))
+ {
+ const UserMembList* userlist = channel->GetUsers();
+ for(UserMembCIter i = userlist->begin(); i != userlist->end(); i++)
+ {
+ BufferedSocketCertificateRequest req(i->first, creator, i->first->GetIOHook());
+ req.Send();
+ if(!req.cert && !ServerInstance->ULine(i->first->server))
+ {
+ source->WriteNumeric(ERR_ALLMUSTSSL, "%s %s :all members of the channel must be connected via SSL", source->nick.c_str(), channel->name.c_str());
+ return MODEACTION_DENY;
+ }
+ }
+ }
+ channel->SetMode('z',true);
+ return MODEACTION_ALLOW;
+ }
+ else
+ {
+ return MODEACTION_DENY;
+ }
+ }
+ else
+ {
+ if (channel->IsModeSet('z'))
+ {
+ channel->SetMode('z',false);
+ return MODEACTION_ALLOW;
+ }
+
+ return MODEACTION_DENY;
+ }