163 |
|
} |
164 |
|
|
165 |
|
if (!IsExemptResv(source_p) && |
166 |
< |
!(IsOper(source_p) && ConfigFileEntry.oper_pass_resv) && |
166 |
> |
!(HasUMode(source_p, UMODE_OPER) && ConfigFileEntry.oper_pass_resv) && |
167 |
|
(!hash_find_resv(chan) == ConfigChannel.restrict_channels)) |
168 |
|
{ |
169 |
|
sendto_one(source_p, form_str(ERR_BADCHANNAME), |
175 |
|
} |
176 |
|
|
177 |
|
if ((dlink_list_length(&source_p->channel) >= ConfigChannel.max_chans_per_user) && |
178 |
< |
(!IsOper(source_p) || (dlink_list_length(&source_p->channel) >= |
178 |
> |
(!HasUMode(source_p, UMODE_OPER) || (dlink_list_length(&source_p->channel) >= |
179 |
|
ConfigChannel.max_chans_per_user * 3))) |
180 |
|
{ |
181 |
|
sendto_one(source_p, form_str(ERR_TOOMANYCHANNELS), |
188 |
|
if (IsMember(source_p, chptr)) |
189 |
|
continue; |
190 |
|
|
191 |
< |
if (splitmode && !IsOper(source_p) && (*chan != '&') && |
191 |
> |
if (splitmode && !HasUMode(source_p, UMODE_OPER) && (*chan != '&') && |
192 |
|
ConfigChannel.no_join_on_split) |
193 |
|
{ |
194 |
|
sendto_one(source_p, form_str(ERR_UNAVAILRESOURCE), |
217 |
|
} |
218 |
|
else |
219 |
|
{ |
220 |
< |
if (splitmode && !IsOper(source_p) && (*chan != '&') && |
220 |
> |
if (splitmode && !HasUMode(source_p, UMODE_OPER) && (*chan != '&') && |
221 |
|
(ConfigChannel.no_create_on_split || ConfigChannel.no_join_on_split)) |
222 |
|
{ |
223 |
|
sendto_one(source_p, form_str(ERR_UNAVAILRESOURCE), |
229 |
|
chptr = make_channel(chan); |
230 |
|
} |
231 |
|
|
232 |
< |
if (!IsOper(source_p)) |
232 |
> |
if (!HasUMode(source_p, UMODE_OPER)) |
233 |
|
check_spambot_warning(source_p, chptr->chname); |
234 |
|
|
235 |
|
add_user_to_channel(chptr, source_p, flags, 1); |
467 |
|
struct Channel *chptr = NULL; |
468 |
|
dlink_node *ptr = NULL, *ptr_next = NULL; |
469 |
|
|
470 |
< |
if (source_p->channel.head && MyConnect(source_p) && !IsOper(source_p)) |
471 |
< |
check_spambot_warning(source_p, NULL); |
470 |
> |
if (source_p->channel.head) |
471 |
> |
if (MyConnect(source_p) && !HasUMode(source_p, UMODE_OPER)) |
472 |
> |
check_spambot_warning(source_p, NULL); |
473 |
|
|
474 |
|
DLINK_FOREACH_SAFE(ptr, ptr_next, source_p->channel.head) |
475 |
|
{ |