]> jfr.im git - irc/evilnet/x3.git/commitdiff
Fix for AuthServ autohide setting being ignored for LOC/SASL authed users (assumes...
authorMatthew Beeching <redacted>
Sat, 22 Mar 2014 22:36:30 +0000 (22:36 +0000)
committerMatthew Beeching <redacted>
Sat, 22 Mar 2014 22:38:00 +0000 (22:38 +0000)
src/nickserv.c

index 7435a4528125eb0c0ca3447c50971e332b7ce9cf..cbbaea2ef571ec4fe17a1ccd6e24dc84c09146e3 100644 (file)
@@ -5426,6 +5426,7 @@ static int
 check_user_nick(struct userNode *user, UNUSED_ARG(void *extra)) {
     struct nick_info *ni;
     user->modes &= ~FLAGS_REGNICK;
+
     if (!(ni = get_nick_info(user->nick)))
         return 0;
     if (user->handle_info == ni->owner) {
@@ -5446,6 +5447,21 @@ check_user_nick(struct userNode *user, UNUSED_ARG(void *extra)) {
     return 0;
 }
 
+static int
+new_user_event(struct userNode *user, void *extra) {
+    /* If the user's server is not bursting,
+     * the user is authed, the account has autohide set
+     * and the user doesn't have user mode +x then apply
+     * the autohide setting.
+     */
+    if (!user->uplink->burst && user->handle_info &&
+        HANDLE_FLAGGED(user->handle_info, AUTOHIDE) &&
+        !IsHiddenHost(user))
+        irc_umode(user, "+x");
+
+    return check_user_nick(user, extra);
+}
+
 void
 handle_account(struct userNode *user, const char *stamp)
 {
@@ -5951,7 +5967,7 @@ init_nickserv(const char *nick)
     struct chanNode *chan;
     unsigned int i;
     NS_LOG = log_register_type("NickServ", "file:nickserv.log");
-    reg_new_user_func(check_user_nick, NULL);
+    reg_new_user_func(new_user_event, NULL);
     reg_nick_change_func(handle_nick_change, NULL);
     reg_del_user_func(nickserv_remove_user, NULL);
     reg_account_func(handle_account);