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) {