diff --git a/substrate/client/network/sync/src/block_request_handler.rs b/substrate/client/network/sync/src/block_request_handler.rs index 1c576c6188..291157eae4 100644 --- a/substrate/client/network/sync/src/block_request_handler.rs +++ b/substrate/client/network/sync/src/block_request_handler.rs @@ -153,7 +153,8 @@ where ) -> (Self, ProtocolConfig) { // Reserve enough request slots for one request per peer when we are at the maximum // number of peers. - let (tx, request_receiver) = async_channel::bounded(num_peer_hint); + let capacity = std::cmp::max(num_peer_hint, 1); + let (tx, request_receiver) = async_channel::bounded(capacity); let mut protocol_config = generate_protocol_config( protocol_id, diff --git a/substrate/client/network/sync/src/state_request_handler.rs b/substrate/client/network/sync/src/state_request_handler.rs index f3af9a3844..ed14b889cb 100644 --- a/substrate/client/network/sync/src/state_request_handler.rs +++ b/substrate/client/network/sync/src/state_request_handler.rs @@ -131,7 +131,8 @@ where ) -> (Self, ProtocolConfig) { // Reserve enough request slots for one request per peer when we are at the maximum // number of peers. - let (tx, request_receiver) = async_channel::bounded(num_peer_hint); + let capacity = std::cmp::max(num_peer_hint, 1); + let (tx, request_receiver) = async_channel::bounded(capacity); let mut protocol_config = generate_protocol_config( protocol_id, diff --git a/substrate/client/service/src/builder.rs b/substrate/client/service/src/builder.rs index 6b537e7ee4..7dbdda6317 100644 --- a/substrate/client/service/src/builder.rs +++ b/substrate/client/service/src/builder.rs @@ -785,12 +785,14 @@ where }; let (state_request_protocol_config, state_request_protocol_name) = { + let num_peer_hint = net_config.network_config.default_peers_set_num_full as usize + + net_config.network_config.default_peers_set.reserved_nodes.len(); // Allow both outgoing and incoming requests. let (handler, protocol_config) = StateRequestHandler::new( &protocol_id, config.chain_spec.fork_id(), client.clone(), - net_config.network_config.default_peers_set_num_full as usize, + num_peer_hint, ); let config_name = protocol_config.name.clone();