From 2c0e7f05ef994b6682b8defca3a6ad1d4e1a4e28 Mon Sep 17 00:00:00 2001 From: John Abraham Date: Wed, 17 Aug 2011 11:39:16 -0400 Subject: [PATCH] Bug 1164 - IPV4 TCP Bind an already used port failed but without setting errno --- src/internet/model/tcp-socket-base.cc | 10 ++++++++++ src/network/model/socket.h | 1 + 2 files changed, 11 insertions(+) diff --git a/src/internet/model/tcp-socket-base.cc b/src/internet/model/tcp-socket-base.cc index 53113796e..415a5368c 100644 --- a/src/internet/model/tcp-socket-base.cc +++ b/src/internet/model/tcp-socket-base.cc @@ -242,6 +242,11 @@ TcpSocketBase::Bind (const Address &address) else if (ipv4 == Ipv4Address::GetAny () && port != 0) { m_endPoint = m_tcp->Allocate (port); + if (0 == m_endPoint) + { + m_errno = ERROR_ADDRINUSE; + return -1; + } } else if (ipv4 != Ipv4Address::GetAny () && port == 0) { @@ -250,6 +255,11 @@ TcpSocketBase::Bind (const Address &address) else if (ipv4 != Ipv4Address::GetAny () && port != 0) { m_endPoint = m_tcp->Allocate (ipv4, port); + if (0 == m_endPoint) + { + m_errno = ERROR_ADDRINUSE; + return -1; + } } NS_LOG_LOGIC ("TcpSocketBase " << this << " got an endpoint: " << m_endPoint); diff --git a/src/network/model/socket.h b/src/network/model/socket.h index 0993d7997..76131ddb1 100644 --- a/src/network/model/socket.h +++ b/src/network/model/socket.h @@ -82,6 +82,7 @@ public: ERROR_NOROUTETOHOST, ERROR_NODEV, ERROR_ADDRNOTAVAIL, + ERROR_ADDRINUSE, SOCKET_ERRNO_LAST };