diff options
author | dergoegge <n.goeggi@gmail.com> | 2023-03-24 15:45:50 +0100 |
---|---|---|
committer | dergoegge <n.goeggi@gmail.com> | 2023-03-27 16:00:02 +0200 |
commit | cd0c8eeb0940790b6ba83786d1c9e362d4dc4829 (patch) | |
tree | 6afc0ba7f9602b332307f952a0ee8f5875613d12 /src | |
parent | 860402ef2ed728ef096dda4e65e77d566782209f (diff) |
[net] Pass nRecvFloodSize to CNode
Diffstat (limited to 'src')
-rw-r--r-- | src/net.cpp | 23 | ||||
-rw-r--r-- | src/net.h | 8 | ||||
-rw-r--r-- | src/net_processing.cpp | 2 | ||||
-rw-r--r-- | src/test/fuzz/connman.cpp | 1 | ||||
-rw-r--r-- | src/test/util/net.cpp | 2 |
5 files changed, 19 insertions, 17 deletions
diff --git a/src/net.cpp b/src/net.cpp index f5d2328a0c..7023cb0f49 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -573,7 +573,10 @@ CNode* CConnman::ConnectNode(CAddress addrConnect, const char *pszDest, bool fCo pszDest ? pszDest : "", conn_type, /*inbound_onion=*/false, - CNodeOptions{ .i2p_sam_session = std::move(i2p_transient_session) }); + CNodeOptions{ + .i2p_sam_session = std::move(i2p_transient_session), + .recv_flood_size = nReceiveFloodSize, + }); pnode->AddRef(); // We're making a new connection, harvest entropy from the time (and our peer count) @@ -1051,8 +1054,9 @@ void CConnman::CreateNodeFromAcceptedSocket(std::unique_ptr<Sock>&& sock, ConnectionType::INBOUND, inbound_onion, CNodeOptions{ - .permission_flags = permission_flags, - .prefer_evict = discouraged, + .permission_flags = permission_flags, + .prefer_evict = discouraged, + .recv_flood_size = nReceiveFloodSize, }); pnode->AddRef(); m_msgproc->InitializeNode(*pnode, nodeServices); @@ -1328,7 +1332,7 @@ void CConnman::SocketHandlerConnected(const std::vector<CNode*>& nodes, } RecordBytesRecv(nBytes); if (notify) { - pnode->MarkReceivedMsgsForProcessing(nReceiveFloodSize); + pnode->MarkReceivedMsgsForProcessing(); WakeMessageHandler(); } } @@ -2754,8 +2758,6 @@ ServiceFlags CConnman::GetLocalServices() const return nLocalServices; } -unsigned int CConnman::GetReceiveFloodSize() const { return nReceiveFloodSize; } - CNode::CNode(NodeId idIn, std::shared_ptr<Sock> sock, const CAddress& addrIn, @@ -2780,6 +2782,7 @@ CNode::CNode(NodeId idIn, m_conn_type{conn_type_in}, id{idIn}, nLocalHostNonce{nLocalHostNonceIn}, + m_recv_flood_size{node_opts.recv_flood_size}, m_i2p_sam_session{std::move(node_opts.i2p_sam_session)} { if (inbound_onion) assert(conn_type_in == ConnectionType::INBOUND); @@ -2795,7 +2798,7 @@ CNode::CNode(NodeId idIn, } } -void CNode::MarkReceivedMsgsForProcessing(unsigned int recv_flood_size) +void CNode::MarkReceivedMsgsForProcessing() { AssertLockNotHeld(m_msg_process_queue_mutex); @@ -2809,10 +2812,10 @@ void CNode::MarkReceivedMsgsForProcessing(unsigned int recv_flood_size) LOCK(m_msg_process_queue_mutex); m_msg_process_queue.splice(m_msg_process_queue.end(), vRecvMsg); m_msg_process_queue_size += nSizeAdded; - fPauseRecv = m_msg_process_queue_size > recv_flood_size; + fPauseRecv = m_msg_process_queue_size > m_recv_flood_size; } -std::optional<std::pair<CNetMessage, bool>> CNode::PollMessage(size_t recv_flood_size) +std::optional<std::pair<CNetMessage, bool>> CNode::PollMessage() { LOCK(m_msg_process_queue_mutex); if (m_msg_process_queue.empty()) return std::nullopt; @@ -2821,7 +2824,7 @@ std::optional<std::pair<CNetMessage, bool>> CNode::PollMessage(size_t recv_flood // Just take one message msgs.splice(msgs.begin(), m_msg_process_queue, m_msg_process_queue.begin()); m_msg_process_queue_size -= msgs.front().m_raw_message_size; - fPauseRecv = m_msg_process_queue_size > recv_flood_size; + fPauseRecv = m_msg_process_queue_size > m_recv_flood_size; return std::make_pair(std::move(msgs.front()), !m_msg_process_queue.empty()); } @@ -350,6 +350,7 @@ struct CNodeOptions NetPermissionFlags permission_flags = NetPermissionFlags::None; std::unique_ptr<i2p::sam::Session> i2p_sam_session = nullptr; bool prefer_evict = false; + size_t recv_flood_size{DEFAULT_MAXRECEIVEBUFFER * 1000}; }; /** Information about a peer */ @@ -421,7 +422,7 @@ public: const ConnectionType m_conn_type; /** Move all messages from the received queue to the processing queue. */ - void MarkReceivedMsgsForProcessing(unsigned int recv_flood_size) + void MarkReceivedMsgsForProcessing() EXCLUSIVE_LOCKS_REQUIRED(!m_msg_process_queue_mutex); /** Poll the next message from the processing queue of this connection. @@ -429,7 +430,7 @@ public: * Returns std::nullopt if the processing queue is empty, or a pair * consisting of the message and a bool that indicates if the processing * queue has more entries. */ - std::optional<std::pair<CNetMessage, bool>> PollMessage(size_t recv_flood_size) + std::optional<std::pair<CNetMessage, bool>> PollMessage() EXCLUSIVE_LOCKS_REQUIRED(!m_msg_process_queue_mutex); /** Account for the total size of a sent message in the per msg type connection stats. */ @@ -621,6 +622,7 @@ private: const uint64_t nLocalHostNonce; std::atomic<int> m_greatest_common_version{INIT_PROTO_VERSION}; + const size_t m_recv_flood_size; std::list<CNetMessage> vRecvMsg; // Used only by SocketHandler thread Mutex m_msg_process_queue_mutex; @@ -883,8 +885,6 @@ public: /** Get a unique deterministic randomizer. */ CSipHasher GetDeterministicRandomizer(uint64_t id) const; - unsigned int GetReceiveFloodSize() const; - void WakeMessageHandler() EXCLUSIVE_LOCKS_REQUIRED(!mutexMsgProc); /** Return true if we should disconnect the peer for failing an inactivity check. */ diff --git a/src/net_processing.cpp b/src/net_processing.cpp index 3df5374e21..6d65d9ec8b 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -4887,7 +4887,7 @@ bool PeerManagerImpl::ProcessMessages(CNode* pfrom, std::atomic<bool>& interrupt // Don't bother if send buffer is too full to respond anyway if (pfrom->fPauseSend) return false; - auto poll_result{pfrom->PollMessage(m_connman.GetReceiveFloodSize())}; + auto poll_result{pfrom->PollMessage()}; if (!poll_result) { // No message to process return false; diff --git a/src/test/fuzz/connman.cpp b/src/test/fuzz/connman.cpp index 798c14030c..7ce17c0b7c 100644 --- a/src/test/fuzz/connman.cpp +++ b/src/test/fuzz/connman.cpp @@ -125,7 +125,6 @@ FUZZ_TARGET_INIT(connman, initialize_connman) std::vector<CNodeStats> stats; connman.GetNodeStats(stats); (void)connman.GetOutboundTargetBytesLeft(); - (void)connman.GetReceiveFloodSize(); (void)connman.GetTotalBytesRecv(); (void)connman.GetTotalBytesSent(); (void)connman.GetTryNewOutboundPeer(); diff --git a/src/test/util/net.cpp b/src/test/util/net.cpp index 070a6a1c50..037c902491 100644 --- a/src/test/util/net.cpp +++ b/src/test/util/net.cpp @@ -66,7 +66,7 @@ void ConnmanTestMsg::NodeReceiveMsgBytes(CNode& node, Span<const uint8_t> msg_by { assert(node.ReceiveMsgBytes(msg_bytes, complete)); if (complete) { - node.MarkReceivedMsgsForProcessing(nReceiveFloodSize); + node.MarkReceivedMsgsForProcessing(); } } |