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 };