diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/chanserv.c | 4 | ||||
-rw-r--r-- | src/operserv.c | 16 |
2 files changed, 14 insertions, 6 deletions
diff --git a/src/chanserv.c b/src/chanserv.c index 073cb2f2a..c8aad1ade 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -1672,6 +1672,10 @@ int check_kick(User * user, char *chan) } } + if (is_ulined(user->server->name)) { + return 0; + } + if (check_access(user, ci, CA_NOJOIN)) { get_idealban(ci, user, mask, sizeof(mask)); reason = getstring(user->na, CHAN_NOT_ALLOWED_TO_JOIN); diff --git a/src/operserv.c b/src/operserv.c index 588331da9..11fe65219 100644 --- a/src/operserv.c +++ b/src/operserv.c @@ -2599,12 +2599,14 @@ int add_sgline(User * u, char *mask, const char *by, const time_t expires, anope_cmd_sgline(entry->mask, entry->reason); if (KillonSGline && !ircd->sglineenforce) { + snprintf(buf, (BUFSIZE - 1), "G-Lined: %s", entry->reason); u2 = firstuser(); while (u2) { next = nextuser(); - if (match_wild_nocase(entry->mask, u2->realname)) { - snprintf(buf, (BUFSIZE - 1), "G-Lined: %s", entry->reason); - kill_user(ServerName, u2->nick, buf); + if (!is_oper(u2)) { + if (match_wild_nocase(entry->mask, u2->realname)) { + kill_user(ServerName, u2->nick, buf); + } } u2 = next; } @@ -3070,12 +3072,14 @@ int add_sqline(User * u, char *mask, const char *by, const time_t expires, sqline(entry->mask, entry->reason); if (KillonSQline) { + snprintf(buf, (BUFSIZE - 1), "Q-Lined: %s", entry->reason); u2 = firstuser(); while (u2) { next = nextuser(); - if (match_wild_nocase(entry->mask, u2->nick)) { - snprintf(buf, (BUFSIZE - 1), "Q-Lined: %s", entry->reason); - kill_user(ServerName, u2->nick, buf); + if (!is_oper(u2)) { + if (match_wild_nocase(entry->mask, u2->nick)) { + kill_user(ServerName, u2->nick, buf); + } } u2 = next; } |