aboutsummaryrefslogtreecommitdiff
path: root/src/DirectConnection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/DirectConnection.cpp')
-rw-r--r--src/DirectConnection.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/DirectConnection.cpp b/src/DirectConnection.cpp
index 540f7cb..71c7f1f 100644
--- a/src/DirectConnection.cpp
+++ b/src/DirectConnection.cpp
@@ -74,12 +74,26 @@ namespace sibs
{
if(reuseAddr)
{
+ /*
if(UDT::bind(socket, (sockaddr*)&addressToBind.address, sizeof(addressToBind.address)) == UDT::ERROR)
{
std::string errMsg = "UDT: Failed to bind, error: ";
errMsg += UDT::getlasterror_desc();
throw SocketCreateException(errMsg);
}
+ */
+ Ipv4 myAddr = addressToBind;
+ for(int i = 0; i < 2000; ++i)
+ {
+ if(UDT::bind(socket, (sockaddr*)&myAddr.address, sizeof(myAddr.address)) == UDT::ERROR)
+ {
+ port = (u16)generateRandomNumber(2000, 32000);
+ myAddr.address.sin_port = htons(port);
+ }
+ else
+ return socket;
+ }
+ throw SocketCreateException("UDT: Failed to bind after 2000 tries");
}
else
{