diff --git a/src/netutils.c b/src/netutils.c index edf6f66e..d4254b71 100644 --- a/src/netutils.c +++ b/src/netutils.c @@ -90,10 +90,14 @@ setinterface(int socket_fd, const char *interface_name) int bind_to_address(int socket_fd, const char *host) { - if (host != NULL) { + static struct sockaddr_storage storage = {0}; + if (storage.ss_family == AF_INET) { + return bind(socket_fd, (struct sockaddr *)&storage, sizeof(struct sockaddr_in)); + } + else if (storage.ss_family == AF_INET6) { + return bind(socket_fd, (struct sockaddr *)&storage, sizeof(struct sockaddr_in6)); + } else if (host != NULL) { struct cork_ip ip; - struct sockaddr_storage storage; - memset(&storage, 0, sizeof(struct sockaddr_storage)); if (cork_ip_init(&ip, host) != -1) { if (ip.version == 4) { struct sockaddr_in *addr = (struct sockaddr_in *)&storage;