- if(bind(c->socket, &sa.sa, SALEN(sa.sa))) {
- char *addrstr = sockaddr2hostname(&sa);
- logger(LOG_ERR, "Can't bind to %s/tcp: %s", addrstr, sockstrerror(sockerrno));
- free(addrstr);
+ if(sa.sa.sa_family == AF_INET) {
+ sa.in.sin_port = 0;
+ } else if(sa.sa.sa_family == AF_INET6) {
+ sa.in6.sin6_port = 0;
+ }
+
+ if(bind(c->socket, &sa.sa, SALEN(sa.sa))) {
+ char *addrstr = sockaddr2hostname(&sa);
+ logger(LOG_ERR, "Can't bind to %s/tcp: %s", addrstr, sockstrerror(sockerrno));
+ free(addrstr);
+ }