mirror of
https://github.com/fluencelabs/rust-libp2p
synced 2025-06-28 09:11:34 +00:00
Allow customizing the Kademlia maximum packet size (#1502)
* Allow customizing the Kademlia maximum packet size * Address concern
This commit is contained in:
@ -141,21 +141,33 @@ impl Into<proto::message::Peer> for KadPeer {
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct KademliaProtocolConfig {
|
||||
protocol_name: Cow<'static, [u8]>,
|
||||
/// Maximum allowed size of a packet.
|
||||
max_packet_size: usize,
|
||||
}
|
||||
|
||||
impl KademliaProtocolConfig {
|
||||
/// Returns the configured protocol name.
|
||||
pub fn protocol_name(&self) -> &[u8] {
|
||||
&self.protocol_name
|
||||
}
|
||||
|
||||
/// Modifies the protocol name used on the wire. Can be used to create incompatibilities
|
||||
/// between networks on purpose.
|
||||
pub fn with_protocol_name(mut self, name: impl Into<Cow<'static, [u8]>>) -> Self {
|
||||
pub fn set_protocol_name(&mut self, name: impl Into<Cow<'static, [u8]>>) {
|
||||
self.protocol_name = name.into();
|
||||
self
|
||||
}
|
||||
|
||||
/// Modifies the maximum allowed size of a single Kademlia packet.
|
||||
pub fn set_max_packet_size(&mut self, size: usize) {
|
||||
self.max_packet_size = size;
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for KademliaProtocolConfig {
|
||||
fn default() -> Self {
|
||||
KademliaProtocolConfig {
|
||||
protocol_name: Cow::Borrowed(DEFAULT_PROTO_NAME)
|
||||
protocol_name: Cow::Borrowed(DEFAULT_PROTO_NAME),
|
||||
max_packet_size: 4096,
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -179,7 +191,7 @@ where
|
||||
|
||||
fn upgrade_inbound(self, incoming: C, _: Self::Info) -> Self::Future {
|
||||
let mut codec = UviBytes::default();
|
||||
codec.set_max_len(4096);
|
||||
codec.set_max_len(self.max_packet_size);
|
||||
|
||||
future::ok(
|
||||
Framed::new(incoming, codec)
|
||||
@ -211,7 +223,7 @@ where
|
||||
|
||||
fn upgrade_outbound(self, incoming: C, _: Self::Info) -> Self::Future {
|
||||
let mut codec = UviBytes::default();
|
||||
codec.set_max_len(4096);
|
||||
codec.set_max_len(self.max_packet_size);
|
||||
|
||||
future::ok(
|
||||
Framed::new(incoming, codec)
|
||||
|
Reference in New Issue
Block a user