]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/resolve.c
Remove imp.h and exp.h header files
[ngircd-alex.git] / src / ngircd / resolve.c
index ff40b8d523cd10853e69353d283abeabcb86d2d9..d3c89f89ef1ce6810c9150c08c13a004978129ef 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2009 by Alexander Barton (alex@barton.de)
+ * Copyright (c)2001-2011 Alexander Barton (alex@barton.de) and Contributors.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -18,7 +18,6 @@
  * Asynchronous resolver
  */
 
-#include "imp.h"
 #include <assert.h>
 #include <errno.h>
 #include <stdlib.h>
 #include "log.h"
 #include "ng_ipaddr.h"
 
-#include "exp.h"
 #include "resolve.h"
 #include "io.h"
 
-
 static void Do_ResolveAddr PARAMS(( const ng_ipaddr_t *Addr, int Sock, int w_fd ));
 static void Do_ResolveName PARAMS(( const char *Host, int w_fd ));
 
@@ -75,7 +72,8 @@ Resolve_Addr(PROC_STAT * s, const ng_ipaddr_t *Addr, int identsock,
        } else if( pid == 0 ) {
                /* Sub process */
                Log_Init_Subprocess("Resolver");
-               Do_ResolveAddr( Addr, identsock, pipefd[1]);
+               Conn_CloseAllSockets(identsock);
+               Do_ResolveAddr(Addr, identsock, pipefd[1]);
                Log_Exit_Subprocess("Resolver");
                exit(0);
        }
@@ -104,6 +102,7 @@ Resolve_Name( PROC_STAT *s, const char *Host, void (*cbfunc)(int, short))
        } else if( pid == 0 ) {
                /* Sub process */
                Log_Init_Subprocess("Resolver");
+               Conn_CloseAllSockets(NONE);
                Do_ResolveName(Host, pipefd[1]);
                Log_Exit_Subprocess("Resolver");
                exit(0);
@@ -240,7 +239,7 @@ ForwardLookup(const char *hostname, array *IpAddr, int af)
 {
        ng_ipaddr_t addr;
 
-#ifdef HAVE_GETADDRINFO
+#ifdef HAVE_WORKING_GETADDRINFO
        int res;
        struct addrinfo *a, *ai_results;
        static struct addrinfo hints;
@@ -266,9 +265,9 @@ ForwardLookup(const char *hostname, array *IpAddr, int af)
        }
 
        for (a = ai_results; a != NULL; a = a->ai_next) {
-               assert(a->ai_addrlen <= sizeof(addr));
+               assert((size_t)a->ai_addrlen <= sizeof(addr));
 
-               if (a->ai_addrlen > sizeof(addr))
+               if ((size_t)a->ai_addrlen > sizeof(addr))
                        continue;
 
                memcpy(&addr, a->ai_addr, a->ai_addrlen);
@@ -380,7 +379,7 @@ Do_ResolveAddr(const ng_ipaddr_t *Addr, int identsock, int w_fd)
        if (!ReverseLookup(Addr, hostname, sizeof(hostname)))
                goto dns_done;
 
-       if (ForwardLookup(hostname, &resolved_addr, AF_UNSPEC)) {
+       if (ForwardLookup(hostname, &resolved_addr, ng_ipaddr_af(Addr))) {
                if (!Addr_in_list(&resolved_addr, Addr)) {
                        Log_Forgery_WrongIP(tmp_ip_str, hostname);
                        strlcpy(hostname, tmp_ip_str, sizeof(hostname));