diff options
Diffstat (limited to 'src/network/core/address.cpp')
-rw-r--r-- | src/network/core/address.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/network/core/address.cpp b/src/network/core/address.cpp index 5d889c0ad..14b52faa8 100644 --- a/src/network/core/address.cpp +++ b/src/network/core/address.cpp @@ -162,13 +162,13 @@ SOCKET NetworkAddress::Resolve(int family, int socktype, int flags, SocketList * /* Setting both hostname to NULL and port to 0 is not allowed. * As port 0 means bind to any port, the other must mean that * we want to bind to 'all' IPs. */ - if (this->address_length == 0 && StrEmpty(this->hostname)) { + if (this->address_length == 0 && this->GetPort() == 0) { strecpy(this->hostname, this->address.ss_family == AF_INET ? "0.0.0.0" : "::", lastof(this->hostname)); } - int e = getaddrinfo(this->GetHostname(), port_name, &hints, &ai); + int e = getaddrinfo(StrEmpty(this->hostname) ? NULL : this->hostname, port_name, &hints, &ai); if (e != 0) { - DEBUG(net, 0, "getaddrinfo(%s, %s) failed: %s", this->GetHostname(), port_name, FS2OTTD(gai_strerror(e))); + DEBUG(net, 0, "getaddrinfo(%s, %s) failed: %s", this->hostname, port_name, FS2OTTD(gai_strerror(e))); return INVALID_SOCKET; } @@ -270,12 +270,16 @@ static SOCKET ListenLoopProc(addrinfo *runp) /* Connection succeeded */ if (!SetNonBlocking(sock)) DEBUG(net, 0, "Setting non-blocking mode failed"); + DEBUG(net, 1, "[%s] Listening on port %s", + runp->ai_socktype == SOCK_STREAM ? "tcp" : "udp", + NetworkAddress(runp->ai_addr, runp->ai_addrlen).GetAddressAsString()); + return sock; } -SOCKET NetworkAddress::Listen(int family, int socktype, SocketList *sockets) +SOCKET NetworkAddress::Listen(int socktype, SocketList *sockets) { - return this->Resolve(family, socktype, AI_ADDRCONFIG | AI_PASSIVE, sockets, ListenLoopProc); + return this->Resolve(AF_UNSPEC, socktype, AI_ADDRCONFIG | AI_PASSIVE, sockets, ListenLoopProc); } #endif /* ENABLE_NETWORK */ |