Commit 1582042c authored by John Selbie's avatar John Selbie Committed by GitHub

Revert "Introducing the SO_REUSEADDR flag. Client only for now (#69)" (#70)

This reverts commit 95bd802f.
parent a337ffc6
...@@ -327,7 +327,7 @@ void TcpClientLoop(StunClientLogicConfig& config, ClientSocketConfig& socketconf ...@@ -327,7 +327,7 @@ void TcpClientLoop(StunClientLogicConfig& config, ClientSocketConfig& socketconf
{ {
stunsocket.Close(); stunsocket.Close();
hr = stunsocket.TCPInit(socketconfig.addrLocal, RolePP, true, true); hr = stunsocket.TCPInit(addrLocal, RolePP, true);
if (FAILED(hr)) if (FAILED(hr))
{ {
Logging::LogMsg(LL_ALWAYS, "Unable to create local socket for TCP connection (hr == %x)", hr); Logging::LogMsg(LL_ALWAYS, "Unable to create local socket for TCP connection (hr == %x)", hr);
...@@ -474,7 +474,7 @@ HRESULT UdpClientLoop(StunClientLogicConfig& config, const ClientSocketConfig& s ...@@ -474,7 +474,7 @@ HRESULT UdpClientLoop(StunClientLogicConfig& config, const ClientSocketConfig& s
Chk(hr); Chk(hr);
} }
hr = stunSocket.UDPInit(socketconfig.addrLocal, RolePP, false, false); hr = stunSocket.UDPInit(socketconfig.addrLocal, RolePP, false);
if (FAILED(hr)) if (FAILED(hr))
{ {
Logging::LogMsg(LL_ALWAYS, "Unable to create local socket: (error = x%x)", hr); Logging::LogMsg(LL_ALWAYS, "Unable to create local socket: (error = x%x)", hr);
......
...@@ -273,7 +273,7 @@ void CStunSocket::UpdateAddresses() ...@@ -273,7 +273,7 @@ void CStunSocket::UpdateAddresses()
HRESULT CStunSocket::InitCommon(int socktype, const CSocketAddress& addrlocal, SocketRole role, bool fSetReuseFlag, bool fSetReusePortFlag) HRESULT CStunSocket::InitCommon(int socktype, const CSocketAddress& addrlocal, SocketRole role, bool fSetReuseFlag)
{ {
int sock = -1; int sock = -1;
int ret; int ret;
...@@ -299,19 +299,7 @@ HRESULT CStunSocket::InitCommon(int socktype, const CSocketAddress& addrlocal, S ...@@ -299,19 +299,7 @@ HRESULT CStunSocket::InitCommon(int socktype, const CSocketAddress& addrlocal, S
ret = ::setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &fAllow, sizeof(fAllow)); ret = ::setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &fAllow, sizeof(fAllow));
ChkIf(ret == -1, ERRNOHR); ChkIf(ret == -1, ERRNOHR);
} }
#ifdef SO_REUSEPORT
if (fSetReusePortFlag)
{
int fAllow = 1;
ret = ::setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, &fAllow, sizeof(fAllow));
if (ret == -1)
{
Logging::LogMsg(LL_DEBUG, "Warning: Failed to set SO_REUSEPORT option (errno = %d)", errno);
}
}
#endif
ret = bind(sock, addrlocal.GetSockAddr(), addrlocal.GetSockAddrLength()); ret = bind(sock, addrlocal.GetSockAddr(), addrlocal.GetSockAddrLength());
ChkIf(ret == -1, ERRNOHR); ChkIf(ret == -1, ERRNOHR);
...@@ -331,14 +319,14 @@ Cleanup: ...@@ -331,14 +319,14 @@ Cleanup:
HRESULT CStunSocket::UDPInit(const CSocketAddress& local, SocketRole role, bool fSetReuseFlag, bool fSetReusePortFlag) HRESULT CStunSocket::UDPInit(const CSocketAddress& local, SocketRole role, bool fSetReuseFlag)
{ {
return InitCommon(SOCK_DGRAM, local, role, fSetReuseFlag, fSetReusePortFlag); return InitCommon(SOCK_DGRAM, local, role, fSetReuseFlag);
} }
HRESULT CStunSocket::TCPInit(const CSocketAddress& local, SocketRole role, bool fSetReuseFlag, bool fSetReusePortFlag) HRESULT CStunSocket::TCPInit(const CSocketAddress& local, SocketRole role, bool fSetReuseFlag)
{ {
return InitCommon(SOCK_STREAM, local, role, fSetReuseFlag, fSetReusePortFlag); return InitCommon(SOCK_STREAM, local, role, fSetReuseFlag);
} }
...@@ -30,7 +30,7 @@ private: ...@@ -30,7 +30,7 @@ private:
CStunSocket(const CStunSocket&) {;} CStunSocket(const CStunSocket&) {;}
void operator=(const CStunSocket&) {;} void operator=(const CStunSocket&) {;}
HRESULT InitCommon(int socktype, const CSocketAddress& addrlocal, SocketRole role, bool fSetReuseFlag, bool fSetReusePortFlag); HRESULT InitCommon(int socktype, const CSocketAddress& addrlocal, SocketRole role, bool fSetReuseFlag);
void Reset(); void Reset();
...@@ -65,8 +65,8 @@ public: ...@@ -65,8 +65,8 @@ public:
void UpdateAddresses(); void UpdateAddresses();
HRESULT UDPInit(const CSocketAddress& local, SocketRole role, bool fSetReuseFlag, bool fSetReusePortFlag); HRESULT UDPInit(const CSocketAddress& local, SocketRole role, bool fSetReuseFlag);
HRESULT TCPInit(const CSocketAddress& local, SocketRole role, bool fSetReuseFlag, bool fSetReusePortFlag); HRESULT TCPInit(const CSocketAddress& local, SocketRole role, bool fSetReuseFlag);
}; };
typedef boost::shared_ptr<CStunSocket> CRefCountedStunSocket; typedef boost::shared_ptr<CStunSocket> CRefCountedStunSocket;
......
...@@ -57,7 +57,7 @@ HRESULT CStunServer::AddSocket(TransportAddressSet* pTSA, SocketRole role, const ...@@ -57,7 +57,7 @@ HRESULT CStunServer::AddSocket(TransportAddressSet* pTSA, SocketRole role, const
ASSERT(IsValidSocketRole(role)); ASSERT(IsValidSocketRole(role));
Chk(_arrSockets[role].UDPInit(addrListen, role, fSetReuseFlag, false)); Chk(_arrSockets[role].UDPInit(addrListen, role, fSetReuseFlag));
ChkA(_arrSockets[role].EnablePktInfoOption(true)); ChkA(_arrSockets[role].EnablePktInfoOption(true));
......
...@@ -179,7 +179,7 @@ HRESULT CTCPStunThread::CreateListenSockets() ...@@ -179,7 +179,7 @@ HRESULT CTCPStunThread::CreateListenSockets()
{ {
if (_tsaListen.set[r].fValid) if (_tsaListen.set[r].fValid)
{ {
ChkA(_socketListenArray[r].TCPInit(_tsaListen.set[r].addr, (SocketRole)r, true, false)); ChkA(_socketListenArray[r].TCPInit(_tsaListen.set[r].addr, (SocketRole)r, true));
_socketTable[r] = _socketListenArray[r].GetSocketHandle(); _socketTable[r] = _socketListenArray[r].GetSocketHandle();
ChkA(_socketListenArray[r].SetNonBlocking(true)); ChkA(_socketListenArray[r].SetNonBlocking(true));
ret = listen(_socketTable[r], 128); // 128 - large backlog. ret = listen(_socketTable[r], 128); // 128 - large backlog.
......
...@@ -70,9 +70,9 @@ HRESULT CTestRecvFromEx::DoTest(bool fIPV6) ...@@ -70,9 +70,9 @@ HRESULT CTestRecvFromEx::DoTest(bool fIPV6)
// create two sockets listening on INADDR_ANY. One for sending and one for receiving // create two sockets listening on INADDR_ANY. One for sending and one for receiving
ChkA(socketSend.UDPInit(addrAny, RolePP, false, false)); ChkA(socketSend.UDPInit(addrAny, RolePP, false));
ChkA(socketRecv.UDPInit(addrAny, RolePP, false, false)); ChkA(socketRecv.UDPInit(addrAny, RolePP, false));
socketRecv.EnablePktInfoOption(true); socketRecv.EnablePktInfoOption(true);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment