From 9c3bc8b24a42d09577c136128b09ce768c08d507 Mon Sep 17 00:00:00 2001 From: Jan David Mol <mol@astron.nl> Date: Thu, 1 Oct 2015 14:39:27 +0000 Subject: [PATCH] Task #8444: Let getSocketPort return 0 instead of -1 if port could not be determined. This makes code a bit easier. --- LCS/Stream/src/NetFuncs.cc | 4 ++-- LCS/Stream/src/NetFuncs.h | 2 +- LCS/Stream/src/SocketStream.cc | 7 ++----- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/LCS/Stream/src/NetFuncs.cc b/LCS/Stream/src/NetFuncs.cc index 0df3eaaa7d7..d0c6179a188 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 1199c4cd04e..5c5aa59dee4 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 17828f9e7a3..eacf2dd1560 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) { -- GitLab