mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-09-28 02:57:36 +02:00
net: use Sock::SetSockOpt() instead of standalone SetSocketNoDelay()
Since the former is mockable, this makes it easier to test higher level code that sets the TCP_NODELAY flag.
This commit is contained in:
@@ -1190,7 +1190,11 @@ void CConnman::CreateNodeFromAcceptedSocket(std::unique_ptr<Sock>&& sock,
|
|||||||
|
|
||||||
// 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.
|
||||||
SetSocketNoDelay(sock->Get());
|
const int on{1};
|
||||||
|
if (sock->SetSockOpt(IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on)) == SOCKET_ERROR) {
|
||||||
|
LogPrint(BCLog::NET, "connection from %s: unable to set TCP_NODELAY, continuing anyway\n",
|
||||||
|
addr.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
// Don't accept connections from banned peers.
|
// Don't accept connections from banned peers.
|
||||||
bool banned = m_banman && m_banman->IsBanned(addr);
|
bool banned = m_banman && m_banman->IsBanned(addr);
|
||||||
|
@@ -519,7 +519,10 @@ std::unique_ptr<Sock> CreateSockTCP(const CService& address_family)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Set the no-delay option (disable Nagle's algorithm) on the TCP socket.
|
// Set the no-delay option (disable Nagle's algorithm) on the TCP socket.
|
||||||
SetSocketNoDelay(sock->Get());
|
const int on{1};
|
||||||
|
if (sock->SetSockOpt(IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on)) == SOCKET_ERROR) {
|
||||||
|
LogPrint(BCLog::NET, "Unable to set TCP_NODELAY on a newly created socket, continuing anyway\n");
|
||||||
|
}
|
||||||
|
|
||||||
// Set the non-blocking option on the socket.
|
// Set the non-blocking option on the socket.
|
||||||
if (!SetSocketNonBlocking(sock->Get())) {
|
if (!SetSocketNonBlocking(sock->Get())) {
|
||||||
@@ -729,13 +732,6 @@ bool SetSocketNonBlocking(const SOCKET& hSocket)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SetSocketNoDelay(const 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;
|
||||||
|
@@ -223,8 +223,6 @@ bool ConnectThroughProxy(const Proxy& proxy, const std::string& strDest, uint16_
|
|||||||
|
|
||||||
/** Enable non-blocking mode for a socket */
|
/** Enable non-blocking mode for a socket */
|
||||||
bool SetSocketNonBlocking(const SOCKET& hSocket);
|
bool SetSocketNonBlocking(const SOCKET& hSocket);
|
||||||
/** Set the TCP_NODELAY flag on a socket */
|
|
||||||
bool SetSocketNoDelay(const SOCKET& hSocket);
|
|
||||||
void InterruptSocks5(bool interrupt);
|
void InterruptSocks5(bool interrupt);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user