diff --git a/LCS/Stream/src/NetFuncs.cc b/LCS/Stream/src/NetFuncs.cc index 0df3eaaa7d7f415ff70cab65e662e71d6710b954..d0c6179a1888c3be25556f07d40f5170af034427 100644 --- a/LCS/Stream/src/NetFuncs.cc +++ b/LCS/Stream/src/NetFuncs.cc @@ -115,10 +115,10 @@ namespace LOFAR { THROW_SYSCALL("getsockname"); if (sin.sin_family != AF_INET) - return -1; + return 0; if (addrlen != sizeof sin) - return -1; + return 0; return ntohs(sin.sin_port); } diff --git a/LCS/Stream/src/NetFuncs.h b/LCS/Stream/src/NetFuncs.h index 1199c4cd04e24595c6c015bff1f71d86673fde9d..5c5aa59dee444f7b05a8f057288ec97b764dbab8 100644 --- a/LCS/Stream/src/NetFuncs.h +++ b/LCS/Stream/src/NetFuncs.h @@ -44,7 +44,7 @@ namespace LOFAR { // Retrieve the IP of an interface ("eth0") as an 'ifreq' struct, which can be used as sockaddr. struct sockaddr getInterfaceIP(const std::string &iface); - // Returns the TCP/UDP port number allocated to a socket + // Returns the TCP/UDP port number allocated to a socket, or 0 if unknown. int getSocketPort(int fd); } diff --git a/LCS/Stream/src/SocketStream.cc b/LCS/Stream/src/SocketStream.cc index 17828f9e7a346b7da4c02e86d2fc44e7b5296d89..eacf2dd1560a3549d351ddad97c33eda1ba48516 100644 --- a/LCS/Stream/src/SocketStream.cc +++ b/LCS/Stream/src/SocketStream.cc @@ -139,12 +139,9 @@ SocketStream::SocketStream(const std::string &hostname, uint16 _port, Protocol p if (port == 0) { // we let OS search for a free port - int actual_port = getSocketPort(fd); + port = getSocketPort(fd); - LOG_DEBUG(str(boost::format("Bound socket %s to port %s") % description % actual_port)); - - // we can't accept -1 - if (actual_port >= 0) port = actual_port; + LOG_DEBUG(str(boost::format("Bound socket %s to port %s") % description % port)); } if (protocol == TCP) {