]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ipaddr/ng_ipaddr.c
Log "Can't read MOTD file" as "configuration error"
[ngircd-alex.git] / src / ipaddr / ng_ipaddr.c
index 0367a1f75848b4d9766425d7e6021b3e8f8bf9a9..af524d091fa569dd874559a3f032f5dcc0cfde6d 100644 (file)
@@ -30,6 +30,9 @@ ng_ipaddr_init(ng_ipaddr_t *addr, const char *ip_str, UINT16 port)
 
        memset(&hints, 0, sizeof(hints));
        hints.ai_flags = AI_NUMERICHOST;
+#ifndef WANT_IPV6      /* do not convert ipv6 addresses */
+       hints.ai_family = AF_INET;
+#endif
 
        /* some getaddrinfo implementations require that ai_socktype is set. */
        hints.ai_socktype = SOCK_STREAM;
@@ -38,7 +41,6 @@ ng_ipaddr_init(ng_ipaddr_t *addr, const char *ip_str, UINT16 port)
        snprintf(portstr, sizeof(portstr), "%u", (unsigned int) port);
 
        ret = getaddrinfo(ip_str, portstr, &hints, &res0);
-       assert(ret == 0);
        if (ret != 0)
                return false;
 
@@ -51,6 +53,10 @@ ng_ipaddr_init(ng_ipaddr_t *addr, const char *ip_str, UINT16 port)
        return ret == 0;
 #else /* HAVE_GETADDRINFO */
        assert(ip_str);
+       memset(addr, 0, sizeof *addr);
+#ifdef HAVE_sockaddr_in_len
+       addr->sin4.sin_len = sizeof(addr->sin4);
+#endif
        addr->sin4.sin_family = AF_INET;
 # ifdef HAVE_INET_ATON
        if (inet_aton(ip_str, &addr->sin4.sin_addr) == 0)