Move DNS and auth lookups after starting IAuth.
[ircu2.10.12-pk.git] / ircd / s_auth.c
index 02a91497e6cd89111924a404c379e3fa6e473f02..ff245d6d65423bcb3f30e82767a803294d1b8dc1 100644 (file)
@@ -1020,12 +1020,6 @@ void start_auth(struct Client* client)
   }
   auth->port = remote.port;
 
-  /* Try to start DNS lookup. */
-  start_dns_query(auth);
-
-  /* Try to start ident lookup. */
-  start_auth_query(auth);
-
   /* Set required client inputs for users. */
   if (IsUserPort(client)) {
     cli_user(client) = make_user(client);
@@ -1037,6 +1031,12 @@ void start_auth(struct Client* client)
     start_iauth_query(auth);
   }
 
+  /* Try to start DNS lookup. */
+  start_dns_query(auth);
+
+  /* Try to start ident lookup. */
+  start_auth_query(auth);
+
   /* Add client to GlobalClientList. */
   add_client_to_list(client);
 
@@ -1953,8 +1953,10 @@ static int iauth_cmd_done_account(struct IAuth *iauth, struct Client *cli,
   }
   /* If account has a creation timestamp, use it. */
   assert(cli_user(cli) != NULL);
-  if (params[0][len] == ':')
+  if (params[0][len] == ':') {
     cli_user(cli)->acc_create = strtoul(params[0] + len + 1, NULL, 10);
+    params[0][len] = '\0';
+  }
 
   /* Copy account name to User structure. */
   ircd_strncpy(cli_user(cli)->account, params[0], ACCOUNTLEN);
@@ -2026,7 +2028,7 @@ static int iauth_cmd_challenge(struct IAuth *iauth, struct Client *cli,
 static int iauth_cmd_xquery(struct IAuth *iauth, struct Client *cli,
                            int parc, char **params)
 {
-  const char *serv;
+  char *serv;
   const char *routing;
   const char *query;
   struct Client *acptr;