From 18146572b0a0cbb3eb89738f633fefd903df9692 Mon Sep 17 00:00:00 2001 From: rubidium Date: Wed, 8 Apr 2009 11:57:00 +0000 Subject: (svn r15980) -Codechange: don't try to bind to the same socket twice; it's quite pointless. --- src/network/core/address.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/network/core') diff --git a/src/network/core/address.cpp b/src/network/core/address.cpp index aafa7947c..ba81a6c0d 100644 --- a/src/network/core/address.cpp +++ b/src/network/core/address.cpp @@ -187,6 +187,13 @@ SOCKET NetworkAddress::Resolve(int family, int socktype, int flags, SocketList * SOCKET sock = INVALID_SOCKET; for (struct addrinfo *runp = ai; runp != NULL; runp = runp->ai_next) { + /* When we are binding to multiple sockets, make sure we do not + * connect to one with exactly the same address twice. That's + * ofcourse totally unneeded ;) */ + if (sockets != NULL) { + NetworkAddress address(runp->ai_addr, runp->ai_addrlen); + if (sockets->Find(address) != sockets->End()) continue; + } sock = func(runp); if (sock == INVALID_SOCKET) continue; -- cgit v1.2.3-54-g00ecf