mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-06-14 10:51:27 +02:00
net: isolate the protocol-agnostic part of CConnman::AcceptConnection()
Isolate the second half of `CConnman::AcceptConnection()` into a new separate method, which could be reused if we accept incoming connections by other means than `accept()` (first half of `CConnman::AcceptConnection()`).
This commit is contained in:
parent
1f75a653dd
commit
7c224fdac4
14
src/net.cpp
14
src/net.cpp
@ -1005,8 +1005,6 @@ void CConnman::AcceptConnection(const ListenSocket& hListenSocket) {
|
|||||||
socklen_t len = sizeof(sockaddr);
|
socklen_t len = sizeof(sockaddr);
|
||||||
SOCKET hSocket = accept(hListenSocket.socket, (struct sockaddr*)&sockaddr, &len);
|
SOCKET hSocket = accept(hListenSocket.socket, (struct sockaddr*)&sockaddr, &len);
|
||||||
CAddress addr;
|
CAddress addr;
|
||||||
int nInbound = 0;
|
|
||||||
int nMaxInbound = nMaxConnections - m_max_outbound;
|
|
||||||
|
|
||||||
if (hSocket == INVALID_SOCKET) {
|
if (hSocket == INVALID_SOCKET) {
|
||||||
const int nErr = WSAGetLastError();
|
const int nErr = WSAGetLastError();
|
||||||
@ -1024,6 +1022,18 @@ void CConnman::AcceptConnection(const ListenSocket& hListenSocket) {
|
|||||||
|
|
||||||
NetPermissionFlags permissionFlags = NetPermissionFlags::PF_NONE;
|
NetPermissionFlags permissionFlags = NetPermissionFlags::PF_NONE;
|
||||||
hListenSocket.AddSocketPermissionFlags(permissionFlags);
|
hListenSocket.AddSocketPermissionFlags(permissionFlags);
|
||||||
|
|
||||||
|
CreateNodeFromAcceptedSocket(hSocket, permissionFlags, addr_bind, addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CConnman::CreateNodeFromAcceptedSocket(SOCKET hSocket,
|
||||||
|
NetPermissionFlags permissionFlags,
|
||||||
|
const CAddress& addr_bind,
|
||||||
|
const CAddress& addr)
|
||||||
|
{
|
||||||
|
int nInbound = 0;
|
||||||
|
int nMaxInbound = nMaxConnections - m_max_outbound;
|
||||||
|
|
||||||
AddWhitelistPermissionFlags(permissionFlags, addr);
|
AddWhitelistPermissionFlags(permissionFlags, addr);
|
||||||
if (NetPermissions::HasFlag(permissionFlags, NetPermissionFlags::PF_ISIMPLICIT)) {
|
if (NetPermissions::HasFlag(permissionFlags, NetPermissionFlags::PF_ISIMPLICIT)) {
|
||||||
NetPermissions::ClearFlag(permissionFlags, PF_ISIMPLICIT);
|
NetPermissions::ClearFlag(permissionFlags, PF_ISIMPLICIT);
|
||||||
|
14
src/net.h
14
src/net.h
@ -1049,6 +1049,20 @@ private:
|
|||||||
void ThreadOpenConnections(std::vector<std::string> connect);
|
void ThreadOpenConnections(std::vector<std::string> connect);
|
||||||
void ThreadMessageHandler();
|
void ThreadMessageHandler();
|
||||||
void AcceptConnection(const ListenSocket& hListenSocket);
|
void AcceptConnection(const ListenSocket& hListenSocket);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a `CNode` object from a socket that has just been accepted and add the node to
|
||||||
|
* the `vNodes` member.
|
||||||
|
* @param[in] hSocket Connected socket to communicate with the peer.
|
||||||
|
* @param[in] permissionFlags The peer's permissions.
|
||||||
|
* @param[in] addr_bind The address and port at our side of the connection.
|
||||||
|
* @param[in] addr The address and port at the peer's side of the connection.
|
||||||
|
*/
|
||||||
|
void CreateNodeFromAcceptedSocket(SOCKET hSocket,
|
||||||
|
NetPermissionFlags permissionFlags,
|
||||||
|
const CAddress& addr_bind,
|
||||||
|
const CAddress& addr);
|
||||||
|
|
||||||
void DisconnectNodes();
|
void DisconnectNodes();
|
||||||
void NotifyNumConnectionsChanged();
|
void NotifyNumConnectionsChanged();
|
||||||
/** Return true if the peer is inactive and should be disconnected. */
|
/** Return true if the peer is inactive and should be disconnected. */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user