mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-01-29 15:43:52 +00:00
Enable SO_NO_CHECK if available to skip UDP checksum on packet send for slight performance improvement. We do our own cryptographically secure authentication so UDP checksum is worthless.
This commit is contained in:
parent
1537109514
commit
40d5c79b62
@ -232,7 +232,7 @@ unsigned int Http::_do(
|
||||
handler.error = false;
|
||||
handler.done = false;
|
||||
|
||||
Phy<HttpPhyHandler *> phy(&handler,true);
|
||||
Phy<HttpPhyHandler *> phy(&handler,true,true);
|
||||
|
||||
bool instantConnect = false;
|
||||
handler.phy = &phy;
|
||||
|
@ -144,7 +144,7 @@ private:
|
||||
fd_set _readfds;
|
||||
fd_set _writefds;
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
fd_set _exceptfds;
|
||||
fd_set _exceptfds;
|
||||
#endif
|
||||
long _nfds;
|
||||
|
||||
@ -152,13 +152,15 @@ private:
|
||||
ZT_PHY_SOCKFD_TYPE _whackSendSocket;
|
||||
|
||||
bool _noDelay;
|
||||
bool _noCheck;
|
||||
|
||||
public:
|
||||
/**
|
||||
* @param handler Pointer of type HANDLER_PTR_TYPE to handler
|
||||
* @param noDelay If true, disable TCP NAGLE algorithm on TCP sockets
|
||||
* @param noCheck If true, attempt to set UDP SO_NO_CHECK option to disable sending checksums
|
||||
*/
|
||||
Phy(HANDLER_PTR_TYPE handler,bool noDelay) :
|
||||
Phy(HANDLER_PTR_TYPE handler,bool noDelay,bool noCheck) :
|
||||
_handler(handler)
|
||||
{
|
||||
FD_ZERO(&_readfds);
|
||||
@ -202,6 +204,7 @@ public:
|
||||
_whackReceiveSocket = pipes[0];
|
||||
_whackSendSocket = pipes[1];
|
||||
_noDelay = noDelay;
|
||||
_noCheck = noCheck;
|
||||
}
|
||||
|
||||
~Phy()
|
||||
@ -296,6 +299,11 @@ public:
|
||||
#endif
|
||||
#ifdef IP_MTU_DISCOVER
|
||||
f = 0; setsockopt(s,IPPROTO_IP,IP_MTU_DISCOVER,&f,sizeof(f));
|
||||
#endif
|
||||
#ifdef SO_NO_CHECK
|
||||
if (_noCheck) {
|
||||
f = 1; setsockopt(s,SOL_SOCKET,SO_NO_CHECK,(void *)&f,sizeof(f));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif // Windows or not
|
||||
|
@ -696,7 +696,7 @@ static int testPhy()
|
||||
|
||||
std::cout << "[phy] Creating phy endpoint..." << std::endl;
|
||||
TestPhyHandlers testPhyHandlers;
|
||||
testPhyInstance = new Phy<TestPhyHandlers *>(&testPhyHandlers,false);
|
||||
testPhyInstance = new Phy<TestPhyHandlers *>(&testPhyHandlers,false,true);
|
||||
|
||||
std::cout << "[phy] Binding UDP listen socket to 127.0.0.1/60002... ";
|
||||
PhySocket *udpListenSock = testPhyInstance->udpBind((const struct sockaddr *)&bindaddr);
|
||||
|
@ -404,7 +404,7 @@ public:
|
||||
#ifdef ZT_ENABLE_NETWORK_CONTROLLER
|
||||
_controller((_homePath + ZT_PATH_SEPARATOR_S + ZT1_CONTROLLER_DB_PATH).c_str()),
|
||||
#endif
|
||||
_phy(this,false),
|
||||
_phy(this,false,true),
|
||||
_overrideRootTopology((overrideRootTopology) ? overrideRootTopology : ""),
|
||||
_node((Node *)0),
|
||||
_controlPlane((ControlPlane *)0),
|
||||
|
@ -297,7 +297,7 @@ int main(int argc,char **argv)
|
||||
srand(time((time_t *)0));
|
||||
|
||||
TcpProxyService svc;
|
||||
Phy<TcpProxyService *> phy(&svc,false);
|
||||
Phy<TcpProxyService *> phy(&svc,false,true);
|
||||
svc.phy = &phy;
|
||||
svc.udpPortCounter = 1023;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user