--- a/src/sock.c +++ b/src/sock.c @@ -63,7 +63,7 @@ static const char * family_string (int a * to indicate an error. */ static int -bind_socket (int sockfd, const char *addr, int family) +bind_socket (int sockfd, const char *addr) { struct addrinfo hints, *res, *ressave; int n; @@ -72,14 +72,14 @@ bind_socket (int sockfd, const char *add assert (addr != NULL && strlen (addr) != 0); memset (&hints, 0, sizeof (struct addrinfo)); - hints.ai_family = family; + hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; /* The local port is not important */ n = getaddrinfo (addr, NULL, &hints, &res); if (n != 0) { log_message (LOG_INFO, - "bind_socket: getaddrinfo failed for %s: %s (af: %s)", addr, get_gai_error (n), family_string(family)); + "bind_socket: getaddrinfo failed for %s: %s", addr, get_gai_error (n)); return -1; } @@ -102,14 +102,14 @@ bind_socket (int sockfd, const char *add * Try binding the given socket to supplied addresses, stopping when one succeeds. */ static int -bind_socket_list (int sockfd, sblist *addresses, int family) +bind_socket_list (int sockfd, sblist *addresses) { size_t nb_addresses = sblist_getsize(addresses); size_t i; for (i = 0; i < nb_addresses; i++) { const char *address = *(const char **)sblist_get(addresses, i); - if (bind_socket(sockfd, address, family) >= 0) { + if (bind_socket(sockfd, address) >= 0) { log_message(LOG_INFO, "Bound to %s", address); return 0; } @@ -170,14 +170,12 @@ int opensock (const char *host, int port /* Bind to the specified address */ if (bind_to) { - if (bind_socket (sockfd, bind_to, - res->ai_family) < 0) { + if (bind_socket (sockfd, bind_to) < 0) { close (sockfd); continue; /* can't bind, so try again */ } } else if (config->bind_addrs) { - if (bind_socket_list (sockfd, config->bind_addrs, - res->ai_family) < 0) { + if (bind_socket_list (sockfd, config->bind_addrs) < 0) { close (sockfd); continue; /* can't bind, so try again */ }