Fix display with %hu format.
[ircu2.10.12-pk.git] / ircd / ircd_auth.c
index 8b76a160cab521c84c94000b3b7d76e9e37e9b6a..c38bf5ce1a9938e56687232713760e2f57e7beba 100644 (file)
@@ -82,7 +82,6 @@ struct IAuth {
   struct Timer i_reconn_timer;          /**< when to reconnect the connection */
   struct Timer i_request_timer;         /**< when the current request times out */
   struct IAuthFlags i_flags;            /**< connection state/status/flags */
-  struct DNSQuery i_query;              /**< DNS lookup for iauth server */
   unsigned int i_recvM;                 /**< messages received */
   unsigned int i_sendM;                 /**< messages sent */
   unsigned int i_recvK;                 /**< kilobytes received */
@@ -366,7 +365,7 @@ static void iauth_protocol_violation(struct IAuth *iauth, const char *format, ..
   assert(format != 0);
   vd.vd_format = format;
   va_start(vd.vd_args, format);
-  sendwallto_group_butone(&me, WALL_DESYNCH, NULL, "IAuth protocol violation: %v", &vd);
+  sendto_opmask_butone(NULL, SNO_CONNEXIT, "IAuth protocol violation: %v", &vd);
   va_end(vd.vd_args);
 }
 
@@ -406,13 +405,13 @@ static void iauth_disconnect(struct IAuth *iauth)
  * @param[in] vptr Pointer to the IAuth struct.
  * @param[in] he DNS reply parameters.
  */
-static void iauth_dns_callback(void *vptr, struct DNSReply *he)
+static void iauth_dns_callback(void *vptr, const struct irc_in_addr *addr, const char *h_name)
 {
   struct IAuth *iauth = vptr;
-  if (!he) {
+  if (!addr) {
     log_write(LS_IAUTH, L_NOTICE, 0, "IAuth connection to %s failed: host lookup failed", i_host(iauth));
   } else {
-    memcpy(&i_addr(iauth).addr, &he->addr, sizeof(i_addr(iauth).addr));
+    memcpy(&i_addr(iauth).addr, addr, sizeof(i_addr(iauth).addr));
     if (!irc_in_addr_valid(&i_addr(iauth).addr)) {
       log_write(LS_IAUTH, L_NOTICE, 0, "IAuth connection to %s failed: host came back as unresolved", i_host(iauth));
       return;
@@ -461,9 +460,7 @@ static void iauth_reconnect(struct IAuth *iauth)
   log_write(LS_IAUTH, L_DEBUG, 0, "IAuth attempt connection to %s port %p.", i_host(iauth), i_port(iauth));
   if (!irc_in_addr_valid(&i_addr(iauth).addr)
       && !ircd_aton(&i_addr(iauth).addr, i_host(iauth))) {
-    i_query(iauth).vptr = iauth;
-    i_query(iauth).callback = iauth_dns_callback;
-    gethost_byname(i_host(iauth), &i_query(iauth));
+    gethost_byname(i_host(iauth), iauth_dns_callback, iauth);
     return;
   }
   local = irc_in_addr_is_ipv4(&i_addr(iauth).addr) ? &VirtualHost_v4 : &VirtualHost_v6;
@@ -721,10 +718,10 @@ void iauth_exit_client(struct Client *cptr)
     iauth_dispose_request(iauth_active, cli_iauth(cptr));
     cli_iauth(cptr) = NULL;
   }
-  if (!i_GetConnected(iauth_active))
-    return;
-  iauth_send(iauth_active, "ExitUser %x", cptr);
-  iauth_write(iauth_active);
+  if (iauth_active && i_GetConnected(iauth_active)) {
+    iauth_send(iauth_active, "ExitUser %x", cptr);
+    iauth_write(iauth_active);
+  }
 }
 
 /** Find pending request with a particular ID.
@@ -754,7 +751,7 @@ static struct IAuthRequest *iauth_find_request(struct IAuth *iauth, char *id)
 static void iauth_dispose_request(struct IAuth *iauth, struct IAuthRequest *iar)
 {
   assert(iar->iar_client != NULL);
-  if (iar->iar_timed)
+  if (iar->iar_timed && t_active(&i_request_timer(iauth)))
     timer_del(&i_request_timer(iauth));
   cli_iauth(iar->iar_client) = NULL;
   iar->iar_prev->iar_next = iar->iar_next;