[net] Added SetSocketNoDelay() utility function
This commit is contained in:
parent
02d64bd929
commit
ad415bc16a
3 changed files with 12 additions and 12 deletions
|
@ -1069,12 +1069,7 @@ void CConnman::AcceptConnection(const ListenSocket& hListenSocket) {
|
||||||
|
|
||||||
// According to the internet TCP_NODELAY is not carried into accepted sockets
|
// According to the internet TCP_NODELAY is not carried into accepted sockets
|
||||||
// on all platforms. Set it again here just to be sure.
|
// on all platforms. Set it again here just to be sure.
|
||||||
int set = 1;
|
SetSocketNoDelay(hSocket);
|
||||||
#ifdef WIN32
|
|
||||||
setsockopt(hSocket, IPPROTO_TCP, TCP_NODELAY, (const char*)&set, sizeof(int));
|
|
||||||
#else
|
|
||||||
setsockopt(hSocket, IPPROTO_TCP, TCP_NODELAY, (void*)&set, sizeof(int));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (IsBanned(addr) && !whitelisted)
|
if (IsBanned(addr) && !whitelisted)
|
||||||
{
|
{
|
||||||
|
|
|
@ -428,18 +428,14 @@ bool static ConnectSocketDirectly(const CService &addrConnect, SOCKET& hSocketRe
|
||||||
if (hSocket == INVALID_SOCKET)
|
if (hSocket == INVALID_SOCKET)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
int set = 1;
|
|
||||||
#ifdef SO_NOSIGPIPE
|
#ifdef SO_NOSIGPIPE
|
||||||
|
int set = 1;
|
||||||
// Different way of disabling SIGPIPE on BSD
|
// Different way of disabling SIGPIPE on BSD
|
||||||
setsockopt(hSocket, SOL_SOCKET, SO_NOSIGPIPE, (void*)&set, sizeof(int));
|
setsockopt(hSocket, SOL_SOCKET, SO_NOSIGPIPE, (void*)&set, sizeof(int));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//Disable Nagle's algorithm
|
//Disable Nagle's algorithm
|
||||||
#ifdef WIN32
|
SetSocketNoDelay(hSocket);
|
||||||
setsockopt(hSocket, IPPROTO_TCP, TCP_NODELAY, (const char*)&set, sizeof(int));
|
|
||||||
#else
|
|
||||||
setsockopt(hSocket, IPPROTO_TCP, TCP_NODELAY, (void*)&set, sizeof(int));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Set to non-blocking
|
// Set to non-blocking
|
||||||
if (!SetSocketNonBlocking(hSocket, true))
|
if (!SetSocketNonBlocking(hSocket, true))
|
||||||
|
@ -728,6 +724,13 @@ bool SetSocketNonBlocking(SOCKET& hSocket, bool fNonBlocking)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SetSocketNoDelay(SOCKET& hSocket)
|
||||||
|
{
|
||||||
|
int set = 1;
|
||||||
|
int rc = setsockopt(hSocket, IPPROTO_TCP, TCP_NODELAY, (const char*)&set, sizeof(int));
|
||||||
|
return rc == 0;
|
||||||
|
}
|
||||||
|
|
||||||
void InterruptSocks5(bool interrupt)
|
void InterruptSocks5(bool interrupt)
|
||||||
{
|
{
|
||||||
interruptSocks5Recv = interrupt;
|
interruptSocks5Recv = interrupt;
|
||||||
|
|
|
@ -59,6 +59,8 @@ std::string NetworkErrorString(int err);
|
||||||
bool CloseSocket(SOCKET& hSocket);
|
bool CloseSocket(SOCKET& hSocket);
|
||||||
/** Disable or enable blocking-mode for a socket */
|
/** Disable or enable blocking-mode for a socket */
|
||||||
bool SetSocketNonBlocking(SOCKET& hSocket, bool fNonBlocking);
|
bool SetSocketNonBlocking(SOCKET& hSocket, bool fNonBlocking);
|
||||||
|
/** Set the TCP_NODELAY flag on a socket */
|
||||||
|
bool SetSocketNoDelay(SOCKET& hSocket);
|
||||||
/**
|
/**
|
||||||
* Convert milliseconds to a struct timeval for e.g. select.
|
* Convert milliseconds to a struct timeval for e.g. select.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue