648 |
|
static int |
649 |
|
can_join(struct Client *client_p, struct Channel *chptr, const char *key) |
650 |
|
{ |
651 |
< |
if ((chptr->mode.mode & MODE_SSLONLY) && !HasUMode(client_p, UMODE_SSL)) |
651 |
> |
if (HasCMode(chptr, MODE_SSLONLY) && !HasUMode(client_p, UMODE_SSL)) |
652 |
|
return ERR_SSLONLYCHAN; |
653 |
|
|
654 |
< |
if ((chptr->mode.mode & MODE_REGONLY) && !HasUMode(client_p, UMODE_REGISTERED)) |
654 |
> |
if (HasCMode(chptr, MODE_REGONLY) && !HasUMode(client_p, UMODE_REGISTERED)) |
655 |
|
return ERR_NEEDREGGEDNICK; |
656 |
|
|
657 |
< |
if ((chptr->mode.mode & MODE_OPERONLY) && !HasUMode(client_p, UMODE_OPER)) |
657 |
> |
if (HasCMode(chptr, MODE_OPERONLY) && !HasUMode(client_p, UMODE_OPER)) |
658 |
|
return ERR_OPERONLYCHAN; |
659 |
|
|
660 |
< |
if (chptr->mode.mode & MODE_INVITEONLY) |
660 |
> |
if (HasCMode(chptr, MODE_INVITEONLY)) |
661 |
|
if (!find_invite(chptr, client_p)) |
662 |
|
if (!find_bmask(client_p, &chptr->invexlist)) |
663 |
|
return ERR_INVITEONLYCHAN; |
759 |
|
if ((resv = resv_find(chptr->name, match)) && !resv_exempt_find(client_p, resv)) |
760 |
|
return ERR_CANNOTSENDTOCHAN; |
761 |
|
|
762 |
< |
if ((chptr->mode.mode & MODE_NOCTRL) && msg_has_ctrls(message)) |
762 |
> |
if (HasCMode(chptr, MODE_NOCTRL) && msg_has_ctrls(message)) |
763 |
|
return ERR_NOCTRLSONCHAN; |
764 |
|
|
765 |
< |
if (chptr->mode.mode & MODE_NOCTCP) |
765 |
> |
if (HasCMode(chptr, MODE_NOCTCP)) |
766 |
|
if (*message == '\001' && strncmp(message + 1, "ACTION ", 7)) |
767 |
|
return ERR_NOCTCP; |
768 |
|
|
770 |
|
if (member->flags & (CHFL_CHANOP | CHFL_HALFOP | CHFL_VOICE)) |
771 |
|
return CAN_SEND_OPV; |
772 |
|
|
773 |
< |
if (!member && (chptr->mode.mode & MODE_NOPRIVMSGS)) |
773 |
> |
if (!member && HasCMode(chptr, MODE_NOPRIVMSGS)) |
774 |
|
return ERR_CANNOTSENDTOCHAN; |
775 |
|
|
776 |
< |
if (chptr->mode.mode & MODE_MODERATED) |
776 |
> |
if (HasCMode(chptr, MODE_MODERATED)) |
777 |
|
return ERR_CANNOTSENDTOCHAN; |
778 |
|
|
779 |
< |
if ((chptr->mode.mode & MODE_MODREG) && !HasUMode(client_p, UMODE_REGISTERED)) |
779 |
> |
if (HasCMode(chptr, MODE_MODREG) && !HasUMode(client_p, UMODE_REGISTERED)) |
780 |
|
return ERR_NEEDREGGEDNICK; |
781 |
|
|
782 |
< |
if ((chptr->mode.mode & MODE_NONOTICE) && notice) |
782 |
> |
if (HasCMode(chptr, MODE_NONOTICE) && notice) |
783 |
|
return ERR_CANNOTSENDTOCHAN; |
784 |
|
|
785 |
|
/* Cache can send if banned */ |
1042 |
|
if (flags == CHFL_CHANOP) |
1043 |
|
{ |
1044 |
|
chptr->creationtime = CurrentTime; |
1045 |
< |
chptr->mode.mode |= MODE_TOPICLIMIT; |
1046 |
< |
chptr->mode.mode |= MODE_NOPRIVMSGS; |
1045 |
> |
AddCMode(chptr, MODE_TOPICLIMIT); |
1046 |
> |
AddCMode(chptr, MODE_NOPRIVMSGS); |
1047 |
|
|
1048 |
|
sendto_server(client_p, 0, 0, ":%s SJOIN %ju %s +nt :@%s", |
1049 |
|
me.id, chptr->creationtime, |