Committer  : entrope
CVSROOT    : /cvsroot/undernet-ircu
Module     : ircu2.10
Branch tags: u2_10_12_branch
Commit time: 2006-04-29 02:34:14 UTC

Modified files:
  Tag: u2_10_12_branch
     ircd/s_auth.c ChangeLog

Log message:

Fix new auth system timeout bugs (SF bug#1469462).

---------------------- diff included ----------------------
Index: ircu2.10/ChangeLog
diff -u ircu2.10/ChangeLog:1.710.2.92 ircu2.10/ChangeLog:1.710.2.93
--- ircu2.10/ChangeLog:1.710.2.92       Fri Apr 28 19:21:56 2006
+++ ircu2.10/ChangeLog  Fri Apr 28 19:34:03 2006
@@ -1,5 +1,13 @@
 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.
 
Index: ircu2.10/ircd/s_auth.c
diff -u ircu2.10/ircd/s_auth.c:1.37.2.7 ircu2.10/ircd/s_auth.c:1.37.2.8
--- ircu2.10/ircd/s_auth.c:1.37.2.7     Thu Apr  6 21:00:31 2006
+++ ircu2.10/ircd/s_auth.c      Fri Apr 28 19:34:03 2006
@@ -31,7 +31,7 @@
  */
 /** @file
  * @brief Implementation of DNS and ident lookups.
- * @version $Id: s_auth.c,v 1.37.2.7 2006/04/07 04:00:31 entrope Exp $
+ * @version $Id: s_auth.c,v 1.37.2.8 2006/04/29 02:34:03 entrope Exp $
  */
 #include "config.h"
 
@@ -96,7 +96,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 */
@@ -405,7 +405,7 @@
 
       /* 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,7 +415,6 @@
   else
     FlagSet(&auth->flags, AR_IAUTH_HURRY);
 
-
   destroy_auth_request(auth, send_reports);
   if (!IsUserPort(auth->client))
     return 0;
@@ -716,7 +715,8 @@
     s_fd(&auth->socket) = -1;
   }
 
-  timer_del(&auth->timeout);
+  if (t_active(&auth->timeout))
+    timer_del(&auth->timeout);
   cli_auth(auth->client) = NULL;
 }
 
@@ -746,9 +746,6 @@
     }
     /* 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");
   }
 }
 
----------------------- End of diff -----------------------
_______________________________________________
Patches mailing list
[email protected]
http://undernet.sbg.org/mailman/listinfo/patches

Reply via email to