]> jfr.im git - irc/quakenet/newserv.git/blobdiff - chanserv/authcmds/login.c
Updated Q's auth routines to set a unique timestamp for each auth session on
[irc/quakenet/newserv.git] / chanserv / authcmds / login.c
index 9b9bc2c2e8ecf1ddb220fc7f8354b8d61307b7ae..8c937f3c1c8132eb50128547cdadea511d268c2a 100644 (file)
@@ -32,6 +32,7 @@ int csa_auth(void *source, int cargc, char **cargv, CRAlgorithm alg) {
   char *authtype = "AUTH";
   authname *anp;
   int toomanyauths=0;
+  time_t now;
 
   if (alg) {
     challenge=1;
@@ -100,7 +101,13 @@ int csa_auth(void *source, int cargc, char **cargv, CRAlgorithm alg) {
   if (toomanyauths)
     return CMD_ERROR;
 
-  rup->lastauth=time(NULL);
+  /* Guarantee a unique auth timestamp for each account */
+  now=time(NULL);
+  if (rup->lastauth < now) 
+    rup->lastauth=now;
+  else
+    rup->lastauth++;
+
   sprintf(userhost,"%s@%s",sender->ident,sender->host->name->content);
   if (rup->lastuserhost)
     freesstring(rup->lastuserhost);
@@ -137,7 +144,7 @@ int csa_auth(void *source, int cargc, char **cargv, CRAlgorithm alg) {
   chanservstdmessage(sender, QM_AUTHOK, rup->username);
 
   cs_log(sender,"%s OK username %s", authtype,rup->username);
-  localusersetaccountwithuserid(sender, rup->username, rup->ID);;
+  localusersetaccountwithuseridts(sender, rup->username, rup->ID, rup->lastauth);
 
   return CMD_OK;
 }