Committer  : entrope
CVSROOT    : /cvsroot/undernet-ircu
Module     : ircu2.10
Commit time: 2006-05-14 19:31:40 UTC

Modified files:
     ChangeLog doc/example.conf include/s_auth.h ircd/ircd.c
     ircd/ircd_parser.y ircd/list.c ircd/m_pong.c ircd/s_auth.c

Log message:

Synchronize CVS HEAD with ircu2_10_12_branch.

---------------------- diff included ----------------------
Index: ircu2.10/ChangeLog
diff -u ircu2.10/ChangeLog:1.772 ircu2.10/ChangeLog:1.773
--- ircu2.10/ChangeLog:1.772    Thu Apr  6 21:02:26 2006
+++ ircu2.10/ChangeLog  Sun May 14 12:31:30 2006
@@ -1,3 +1,76 @@
+2006-05-14  Michael Poole <[EMAIL PROTECTED]>
+
+       * doc/example.conf (Connect): Mention the vhost option.
+
+2006-05-08  Michael Poole <[EMAIL PROTECTED]>
+
+       * ircd/m_pong.c (mr_pong): Move cli_lasttime update from here...
+
+       * ircd/s_auth.c (auth_set_pong): ... to here.
+
+2006-05-07  Michael Poole <[EMAIL PROTECTED]>
+
+       * include/s_auth.h (auth_ping_timeout): Declare new function.
+
+       * ircd/ircd.c (check_pings): Move auth timeout logic into that new
+       function.
+
+       * ircd/s_auth.c (HeaderMessages): Insert new message.
+       (auth_ping_timeout): Define new function.
+       (auth_timeout_callback): Remove "hurry" notification from here.
+
+2006-05-07  Michael Poole <[EMAIL PROTECTED]>
+
+       * include/s_auth.h (destroy_auth_request): Remove second argument.
+
+       * ircd/list.c (free_client): Update to match.
+
+       * ircd/s_auth.c (check_auth_finished): Remove second argument and
+       update call to destroy_auth_request().
+       (send_auth_query): Update call to destroy_auth_request().
+       (destroy_auth_request): Remove second argument.
+       (auth_timeout_callback): Send timeout failure messages here
+       instead.  Update call to check_auth_finished().
+       (auth_dns_callback): Update call to check_auth_finished().
+       (start_auth): Likewise.
+       (auth_set_pong): Likewise.
+       (auth_set_user): Likewise.
+       (auth_set_nick): Likewise.
+       (auth_cap_done): Likewise.
+       (iauth_parse): Likewise.
+
+2006-05-06  Michael Poole <[EMAIL PROTECTED]>
+
+       * ircd/m_pong.c (mr_pong): No need to do any work if the client
+       PONGs with no pending PING.
+
+2006-05-06  Michael Poole <[EMAIL PROTECTED]>
+
+       * ircd/m_pong.c (mr_pong): No need to do any work if the client
+       PONGs with no pending PING.
+
+2006-05-06  Michael Poole <[EMAIL PROTECTED]>
+
+       * ircd/s_auth.c (AuthRequestFlag): Add AR_PASSWORD_CHECKED.
+       (check_auth_finished): Move password check out of iauth-only part
+       and use AR_PASSWORD_CHECKED to make sure we only check it once.
+
+2006-04-28  Michael Poole <[EMAIL PROTECTED]>
+
+       * ircd/s_auth.c (AuthRequest): Clarify comment on 'timeout' field.
+       (check_auth_finished): Fix timeout update.
+       (destroy_auth_request): Only delete timer if it is active.
+       (auth_timeout_callback): Do not disconnect client on timeout, so
+       that the user can finish sending NICK/USER or doing iauth.
+
+2006-04-28  Michael Poole <[EMAIL PROTECTED]>
+
+       * doc/example.conf (Admin): Fix documentation of which line can be
+       listed twice.
+
+       * ircd/ircd_parser.y (adminblock): Allow admin information to be
+       changed via /rehash.
+
 2006-04-06  Michael Poole <[EMAIL PROTECTED]>
 
        * ircd/s_auth.c (start_auth): Add client to list after getting
Index: ircu2.10/doc/example.conf
diff -u ircu2.10/doc/example.conf:1.67 ircu2.10/doc/example.conf:1.68
--- ircu2.10/doc/example.conf:1.67      Thu Apr  6 20:46:12 2006
+++ ircu2.10/doc/example.conf   Sun May 14 12:31:30 2006
@@ -82,9 +82,9 @@
 # This sets information that can be retrieved with the /ADMIN command.
 # It should contain at least an admin Email contact address.
 Admin {
+  # At most two location lines are allowed...
   Location = "The University of London";
-  # At most two contact lines are allowed...
-  Contact = "Undernet IRC server";
+  Location = "Undernet IRC server";
   Contact = "IRC Admins <[EMAIL PROTECTED]>";
 };
 
@@ -511,6 +511,7 @@
 # Connect {
 #  name = "servername";
 #  host = "hostnameORip";
+#  vhost = "localIP";
 #  password = "passwd";
 #  port = portno;
 #  class = "classname";
@@ -526,6 +527,10 @@
 # You may tell ircu to not automatically connect to a server by adding
 # "autoconnect = no;"; the default is to autoconnect.
 #
+# If the vhost field is present, the server will use that IP as the
+# local end of connections that it initiates to this server.  This
+# overrides the vhost value from the General block.
+#
 # The maxhops field causes an SQUIT if a hub tries to introduce
 # servers farther away than that; the element 'leaf;' is an alias for
 # 'maxhops = 0;'.  The hub field limits the names of servers that may
Index: ircu2.10/include/s_auth.h
diff -u ircu2.10/include/s_auth.h:1.8 ircu2.10/include/s_auth.h:1.9
--- ircu2.10/include/s_auth.h:1.8       Thu Apr  6 20:27:51 2006
+++ ircu2.10/include/s_auth.h   Sun May 14 12:31:30 2006
@@ -17,7 +17,7 @@
  */
 /** @file
  * @brief Interface for DNS and ident lookups.
- * @version $Id: s_auth.h,v 1.8 2006/04/07 03:27:51 entrope Exp $
+ * @version $Id: s_auth.h,v 1.9 2006/05/14 19:31:30 entrope Exp $
  */
 #ifndef INCLUDED_s_auth_h
 #define INCLUDED_s_auth_h
@@ -34,13 +34,14 @@
 struct StatDesc;
 
 extern void start_auth(struct Client *);
+extern int auth_ping_timeout(struct Client *);
 extern int auth_set_pong(struct AuthRequest *auth, unsigned int cookie);
 extern int auth_set_user(struct AuthRequest *auth, const char *username, const 
char *userinfo);
 extern int auth_set_nick(struct AuthRequest *auth, const char *nickname);
 extern int auth_set_password(struct AuthRequest *auth, const char *password);
 extern int auth_cap_start(struct AuthRequest *auth);
 extern int auth_cap_done(struct AuthRequest *auth);
-extern void destroy_auth_request(struct AuthRequest *req, int send_reports);
+extern void destroy_auth_request(struct AuthRequest *req);
 
 extern int auth_spawn(int argc, char *argv[]);
 extern void auth_send_exit(struct Client *cptr);
Index: ircu2.10/ircd/ircd.c
diff -u ircu2.10/ircd/ircd.c:1.98 ircu2.10/ircd/ircd.c:1.99
--- ircu2.10/ircd/ircd.c:1.98   Thu Apr  6 20:27:50 2006
+++ ircu2.10/ircd/ircd.c        Sun May 14 12:31:30 2006
@@ -19,7 +19,7 @@
  */
 /** @file
  * @brief Entry point and other initialization functions for the daemon.
- * @version $Id: ircd.c,v 1.98 2006/04/07 03:27:50 entrope Exp $
+ * @version $Id: ircd.c,v 1.99 2006/05/14 19:31:30 entrope Exp $
  */
 #include "config.h"
 
@@ -379,28 +379,18 @@
      */
     if (!IsRegistered(cptr)) {
       assert(!IsServer(cptr));
-      if ((CurrentTime-cli_firsttime(cptr) >= max_ping)) {
-       /* Display message if they have sent a NICK and a USER but no
-        * nospoof PONG.
-        */
-       if (*(cli_name(cptr)) && cli_user(cptr) && *(cli_user(cptr))->username) 
{
-         send_reply(cptr, SND_EXPLICIT | ERR_BADPING,
-           ":Your client may not be compatible with this server.");
-         send_reply(cptr, SND_EXPLICIT | ERR_BADPING,
-           ":Compatible clients are available at %s",
-         feature_str(FEAT_URL_CLIENTS));
-       }
-       exit_client_msg(cptr,cptr,&me, "Registration Timeout");
-       continue;
-      } else {
-        /* OK, they still have enough time left, so we'll just skip to the
-         * next client.  Set the next check to be when their time is up, if
-         * that's before the currently scheduled next check -- hikari */
-        expire = cli_firsttime(cptr) + max_ping;
-        if (expire < next_check)
-          next_check = expire;
+      /* If client authorization time has expired, ask auth whether they
+       * should be checked again later. */
+      if ((CurrentTime-cli_firsttime(cptr) >= max_ping)
+          && auth_ping_timeout(cptr))
         continue;
-      }
+      /* OK, they still have enough time left, so we'll just skip to the
+       * next client.  Set the next check to be when their time is up, if
+       * that's before the currently scheduled next check -- hikari */
+      expire = cli_firsttime(cptr) + max_ping;
+      if (expire < next_check)
+        next_check = expire;
+      continue;
     }
 
     /* Quit the client after max_ping*2 - they should have answered by now */
Index: ircu2.10/ircd/ircd_parser.y
diff -u ircu2.10/ircd/ircd_parser.y:1.61 ircu2.10/ircd/ircd_parser.y:1.62
--- ircu2.10/ircd/ircd_parser.y:1.61    Thu Apr  6 20:27:50 2006
+++ ircu2.10/ircd/ircd_parser.y Sun May 14 12:31:30 2006
@@ -17,7 +17,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
  *  USA.
- * $Id: ircd_parser.y,v 1.61 2006/04/07 03:27:50 entrope Exp $
+ * $Id: ircd_parser.y,v 1.62 2006/05/14 19:31:30 entrope Exp $
  */
 %{
 
@@ -319,7 +319,14 @@
   MyFree($3);
 };
 
-adminblock: ADMIN '{' adminitems '}' ';'
+adminblock: ADMIN
+{
+  MyFree(localConf.location1);
+  MyFree(localConf.location2);
+  MyFree(localConf.contact);
+  localConf.location1 = localConf.location2 = localConf.contact = NULL;
+}
+'{' adminitems '}' ';'
 {
   if (localConf.location1 == NULL)
     DupString(localConf.location1, "");
Index: ircu2.10/ircd/list.c
diff -u ircu2.10/ircd/list.c:1.37 ircu2.10/ircd/list.c:1.38
--- ircu2.10/ircd/list.c:1.37   Thu Apr  6 20:27:50 2006
+++ ircu2.10/ircd/list.c        Sun May 14 12:31:30 2006
@@ -19,7 +19,7 @@
  */
 /** @file
  * @brief Singly and doubly linked list manipulation implementation.
- * @version $Id: list.c,v 1.37 2006/04/07 03:27:50 entrope Exp $
+ * @version $Id: list.c,v 1.38 2006/05/14 19:31:30 entrope Exp $
  */
 #include "config.h"
 
@@ -273,7 +273,7 @@
         cptr, cli_connect(cptr)));
 
   if (cli_auth(cptr))
-    destroy_auth_request(cli_auth(cptr), 0);
+    destroy_auth_request(cli_auth(cptr));
 
   /* Make sure we didn't magically get re-added to the list */
   assert(cli_next(cptr) == 0);
Index: ircu2.10/ircd/m_pong.c
diff -u ircu2.10/ircd/m_pong.c:1.17 ircu2.10/ircd/m_pong.c:1.18
--- ircu2.10/ircd/m_pong.c:1.17 Thu Apr  6 20:27:50 2006
+++ ircu2.10/ircd/m_pong.c      Sun May 14 12:31:30 2006
@@ -20,7 +20,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  *
- * $Id: m_pong.c,v 1.17 2006/04/07 03:27:50 entrope Exp $
+ * $Id: m_pong.c,v 1.18 2006/05/14 19:31:30 entrope Exp $
  */
 
 /*
@@ -163,7 +163,6 @@
   assert(!IsRegistered(sptr));
 
   ClrFlag(cptr, FLAG_PINGSENT);
-  cli_lasttime(cptr) = CurrentTime;
   return (parc > 1) ? auth_set_pong(cli_auth(sptr), strtoul(parv[parc - 1], 
NULL, 10)) : 0;
 }
 
@@ -178,6 +177,7 @@
 {
   assert(0 != cptr);
   assert(cptr == sptr);
+
   ClrFlag(cptr, FLAG_PINGSENT);
   cli_lasttime(cptr) = CurrentTime;
   return 0;
Index: ircu2.10/ircd/s_auth.c
diff -u ircu2.10/ircd/s_auth.c:1.41 ircu2.10/ircd/s_auth.c:1.42
--- ircu2.10/ircd/s_auth.c:1.41 Thu Apr  6 21:02:26 2006
+++ ircu2.10/ircd/s_auth.c      Sun May 14 12:31:30 2006
@@ -31,7 +31,7 @@
  */
 /** @file
  * @brief Implementation of DNS and ident lookups.
- * @version $Id: s_auth.c,v 1.41 2006/04/07 04:02:26 entrope Exp $
+ * @version $Id: s_auth.c,v 1.42 2006/05/14 19:31:30 entrope Exp $
  */
 #include "config.h"
 
@@ -83,6 +83,7 @@
     AR_IAUTH_HURRY,     /**< we told iauth to hurry up */
     AR_IAUTH_USERNAME,  /**< iauth sent a username (preferred or forced) */
     AR_IAUTH_FUSERNAME, /**< iauth sent a forced username */
+    AR_PASSWORD_CHECKED, /**< client password already checked */
     AR_NUM_FLAGS
 };
 
@@ -96,7 +97,7 @@
   struct irc_sockaddr local;      /**< local endpoint address */
   struct irc_in_addr  original;   /**< original client IP address */
   struct Socket       socket;     /**< socket descriptor for auth queries */
-  struct Timer        timeout;    /**< timeout timer for auth queries */
+  struct Timer        timeout;    /**< timeout timer for ident and dns queries 
*/
   struct AuthRequestFlags flags;  /**< current state of request */
   unsigned int        cookie;     /**< cookie the user must PONG */
   unsigned short      port;       /**< client's remote port number */
@@ -116,6 +117,7 @@
   MSG("NOTICE AUTH :*** Checking Ident\r\n"),
   MSG("NOTICE AUTH :*** Got ident response\r\n"),
   MSG("NOTICE AUTH :*** No ident response\r\n"),
+  MSG("NOTICE AUTH :*** \r\n"),
   MSG("NOTICE AUTH :*** Your forward and reverse DNS do not match, "
     "ignoring hostname.\r\n"),
   MSG("NOTICE AUTH :*** Invalid hostname\r\n")
@@ -130,6 +132,7 @@
   REPORT_DO_ID,
   REPORT_FIN_ID,
   REPORT_FAIL_ID,
+  REPORT_FAIL_IAUTH,
   REPORT_IP_MISMATCH,
   REPORT_INVAL_DNS
 } ReportType;
@@ -354,11 +357,9 @@
  * destroy \a auth, clear the password, set the username, and register
  * the client.
  * @param[in] auth Authorization request to check.
- * @param[in] send_reports Passed to destroy_auth_request() if \a auth
- *   is complete.
  * @return Zero if client is kept, CPTR_KILLED if client rejected.
  */
-static int check_auth_finished(struct AuthRequest *auth, int send_reports)
+static int check_auth_finished(struct AuthRequest *auth)
 {
   enum AuthRequestFlag flag;
   int res;
@@ -378,34 +379,41 @@
       && preregister_user(auth->client))
     return CPTR_KILLED;
 
+  /* If we have not done so, check client password.  Do this as soon
+   * as possible so that iauth's challenge/response (which uses PASS
+   * for responses) is not confused with the client's password.
+   */
+  if (!FlagHas(&auth->flags, AR_PASSWORD_CHECKED))
+  {
+    struct ConfItem *aconf;
+
+    aconf = cli_confs(auth->client)->value.aconf;
+    if (!EmptyString(aconf->passwd)
+        && strcmp(cli_passwd(auth->client), aconf->passwd))
+    {
+      ServerStats->is_ref++;
+      send_reply(auth->client, ERR_PASSWDMISMATCH);
+      return exit_client(auth->client, auth->client, &me, "Bad Password");
+    }
+    FlagSet(&auth->flags, AR_PASSWORD_CHECKED);
+  }
+
   /* Check if iauth is done. */
   if (FlagHas(&auth->flags, AR_IAUTH_PENDING))
   {
     /* Switch auth request to hurry-up state. */
     if (!FlagHas(&auth->flags, AR_IAUTH_HURRY))
     {
-      struct ConfItem* aconf;
-
       /* Set "hurry" flag in auth request. */
       FlagSet(&auth->flags, AR_IAUTH_HURRY);
 
-      /* Check password now (to avoid challenge/response conflicts). */
-      aconf = cli_confs(auth->client)->value.aconf;
-      if (!EmptyString(aconf->passwd)
-          && strcmp(cli_passwd(auth->client), aconf->passwd))
-      {
-        ServerStats->is_ref++;
-        send_reply(auth->client, ERR_PASSWDMISMATCH);
-        return exit_client(auth->client, auth->client, &me, "Bad Password");
-      }
-
       /* If iauth wants it, send notification. */
       if (IAuthHas(iauth, IAUTH_UNDERNET))
-        sendto_iauth(auth->client, "H %s", ConfClass(aconf));
+        sendto_iauth(auth->client, "H %s", get_client_class(auth->client));
 
       /* If iauth wants it, give client more time. */
       if (IAuthHas(iauth, IAUTH_EXTRAWAIT))
-        timer_chg(&auth->timeout, TT_RELATIVE, feature_int(FEAT_AUTH_TIMEOUT));
+        cli_firsttime(auth->client) = CurrentTime;
     }
 
     Debug((DEBUG_INFO, "Auth %p [%d] still has flag %d", auth,
@@ -415,8 +423,7 @@
   else
     FlagSet(&auth->flags, AR_IAUTH_HURRY);
 
-
-  destroy_auth_request(auth, send_reports);
+  destroy_auth_request(auth);
   if (!IsUserPort(auth->client))
     return 0;
   memset(cli_passwd(auth->client), 0, sizeof(cli_passwd(auth->client)));
@@ -519,7 +526,7 @@
     if (IsUserPort(auth->client))
       sendheader(auth->client, REPORT_FAIL_ID);
     FlagClr(&auth->flags, AR_AUTH_PENDING);
-    check_auth_finished(auth, 0);
+    check_auth_finished(auth);
   }
 }
 
@@ -651,7 +658,7 @@
   }
 
   FlagClr(&auth->flags, AR_AUTH_PENDING);
-  check_auth_finished(auth, 0);
+  check_auth_finished(auth);
 }
 
 /** Handle socket I/O activity.
@@ -693,21 +700,13 @@
 
 /** Stop an auth request completely.
  * @param[in] auth The struct AuthRequest to cancel.
- * @param[in] send_reports If non-zero, report the failure to the user.
  */
-void destroy_auth_request(struct AuthRequest* auth, int send_reports)
+void destroy_auth_request(struct AuthRequest* auth)
 {
   Debug((DEBUG_INFO, "Deleting auth request for %p", auth->client));
 
-  if (FlagHas(&auth->flags, AR_AUTH_PENDING)) {
-    if (send_reports && IsUserPort(auth->client))
-      sendheader(auth->client, REPORT_FAIL_ID);
-  }
-
   if (FlagHas(&auth->flags, AR_DNS_PENDING)) {
     delete_resolver_queries(auth);
-    if (send_reports && IsUserPort(auth->client))
-      sendheader(auth->client, REPORT_FAIL_DNS);
   }
 
   if (-1 < s_fd(&auth->socket)) {
@@ -716,10 +715,54 @@
     s_fd(&auth->socket) = -1;
   }
 
-  timer_del(&auth->timeout);
+  if (t_active(&auth->timeout))
+    timer_del(&auth->timeout);
   cli_auth(auth->client) = NULL;
 }
 
+/** Handle a 'ping' (authorization) timeout for a client.
+ * @param[in] cptr The client whose session authorization has timed out.
+ * @return Zero if client is kept, CPTR_KILLED if client rejected.
+ */
+int auth_ping_timeout(struct Client *cptr)
+{
+  struct AuthRequest *auth;
+  enum AuthRequestFlag flag;
+
+  auth = cli_auth(cptr);
+
+  /* Check for a user-controlled timeout. */
+  for (flag = 0; flag < AR_LAST_SCAN; ++flag) {
+    if (FlagHas(&auth->flags, flag)) {
+      /* Display message if they have sent a NICK and a USER but no
+       * nospoof PONG.
+       */
+      if (*(cli_name(cptr)) && cli_user(cptr) && *(cli_user(cptr))->username) {
+        send_reply(cptr, SND_EXPLICIT | ERR_BADPING,
+                   ":Your client may not be compatible with this server.");
+        send_reply(cptr, SND_EXPLICIT | ERR_BADPING,
+                   ":Compatible clients are available at %s",
+                   feature_str(FEAT_URL_CLIENTS));
+      }
+      return exit_client_msg(cptr, cptr, &me, "Registration Timeout");
+    }
+  }
+
+  /* Check for iauth timeout. */
+  if (FlagHas(&auth->flags, AR_IAUTH_PENDING)) {
+    sendto_iauth(cptr, "T");
+    if (IAuthHas(iauth, IAUTH_REQUIRED)) {
+      sendheader(cptr, REPORT_FAIL_IAUTH);
+      return exit_client_msg(cptr, cptr, &me, "Authorization Timeout");
+    }
+    FlagClr(&auth->flags, AR_IAUTH_PENDING);
+    return check_auth_finished(auth);
+  }
+
+  assert(0 && "Unexpectedly reached end of auth_ping_timeout()");
+  return 0;
+}
+
 /** Timeout a given auth request.
  * @param[in] ev A timer event whose associated data is the expired
  *   struct AuthRequest.
@@ -737,18 +780,23 @@
     /* Report the timeout in the log. */
     log_write(LS_RESOLVER, L_INFO, 0, "Registration timeout %s",
               get_client_name(auth->client, HIDE_IP));
-    /* Tell iauth if we will let the client on. */
-    if (FlagHas(&auth->flags, AR_IAUTH_PENDING)
-        && !IAuthHas(iauth, IAUTH_REQUIRED))
-    {
-      sendto_iauth(auth->client, "T");
-      FlagClr(&auth->flags , AR_IAUTH_PENDING);
+
+    /* Notify client if ident lookup failed. */
+    if (FlagHas(&auth->flags, AR_AUTH_PENDING)) {
+      FlagClr(&auth->flags, AR_AUTH_PENDING);
+      if (IsUserPort(auth->client))
+        sendheader(auth->client, REPORT_FAIL_ID);
     }
+
+    /* Likewise if dns lookup failed. */
+    if (FlagHas(&auth->flags, AR_DNS_PENDING)) {
+      delete_resolver_queries(auth);
+      if (IsUserPort(auth->client))
+        sendheader(auth->client, REPORT_FAIL_DNS);
+    }
+
     /* Try to register the client. */
-    check_auth_finished(auth, 1);
-    /* If that failed, kick them off. */
-    if (!IsUser(auth->client))
-      exit_client(auth->client, auth->client, &me, "Authorization timed out");
+    check_auth_finished(auth);
   }
 }
 
@@ -798,7 +846,7 @@
     ircd_strncpy(cli_sockhost(auth->client), h_name, HOSTLEN);
     sendto_iauth(auth->client, "N %s", h_name);
   }
-  check_auth_finished(auth, 0);
+  check_auth_finished(auth);
 }
 
 /** Flag the client to show an attempt to contact the ident server on
@@ -951,7 +999,7 @@
   add_client_to_list(client);
 
   /* Check which auth events remain pending. */
-  check_auth_finished(auth, 0);
+  check_auth_finished(auth);
 }
 
 /** Mark that a user has PONGed while unregistered.
@@ -970,8 +1018,9 @@
                ":To connect, type /QUOTE PONG %u", auth->cookie);
     return 0;
   }
+  cli_lasttime(auth->client) = CurrentTime;
   FlagClr(&auth->flags, AR_NEEDS_PONG);
-  return check_auth_finished(auth, 0);
+  return check_auth_finished(auth);
 }
 
 /** Record a user's claimed username and userinfo.
@@ -996,7 +1045,7 @@
     sendto_iauth(cptr, "U %s :%s", username, userinfo);
   else if (IAuthHas(iauth, IAUTH_ADDLINFO))
     sendto_iauth(cptr, "U %s", username);
-  return check_auth_finished(auth, 0);
+  return check_auth_finished(auth);
 }
 
 /** Handle authorization-related aspects of initial nickname selection.
@@ -1022,7 +1071,7 @@
   }
   if (IAuthHas(iauth, IAUTH_UNDERNET))
     sendto_iauth(auth->client, "n %s", nickname);
-  return check_auth_finished(auth, 0);
+  return check_auth_finished(auth);
 }
 
 /** Record a user's password.
@@ -1067,7 +1116,7 @@
 {
   assert(auth != NULL);
   FlagClr(&auth->flags, AR_CAP_PENDING);
-  return check_auth_finished(auth, 0);
+  return check_auth_finished(auth);
 }
 
 /** Attempt to spawn the process for an IAuth instance.
@@ -1945,7 +1994,7 @@
                     ircd_ntoa(&cli_ip(cli)));
       else if (handler(iauth, cli, parc - 3, params + 3))
        /* Handler indicated a possible state change. */
-       check_auth_finished(auth, 0);
+       check_auth_finished(auth);
     }
   }
 }
----------------------- End of diff -----------------------
_______________________________________________
Patches mailing list
[email protected]
http://undernet.sbg.org/mailman/listinfo/patches

Reply via email to