aboutsummaryrefslogtreecommitdiff
path: root/src/DirectConnection.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2018-10-14 04:17:54 +0200
committerdec05eba <dec05eba@protonmail.com>2020-08-18 22:56:48 +0200
commit3e2c7e59672b282f8e089679ae7f05cfc03e405b (patch)
tree06f8395046e3cb784dc54f13a4945f18966dd68f /src/DirectConnection.cpp
parentaac821b1d3f1148a084e097e94f383cff3dad467 (diff)
Add peer to listen callback
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
{