diff --git a/protocols/kad/src/record.rs b/protocols/kad/src/record.rs index 93831fd9..3a125ae1 100644 --- a/protocols/kad/src/record.rs +++ b/protocols/kad/src/record.rs @@ -37,6 +37,8 @@ use std::fmt::Debug; pub trait RecordT: Eq + Send + Clone + Debug + Into + TryFrom + 'static { type Key: Clone + Send + Debug + AsRef<[u8]> + Borrow<[u8]> + From> + Hash + Eq; + fn size(&self) -> usize; + fn key(&self) -> &Self::Key; fn into_key(self) -> Self::Key; @@ -51,6 +53,10 @@ pub trait RecordT: Eq + Send + Clone + Debug + Into + TryFrom usize { + self.value.len() + } + fn key(&self) -> &Self::Key { &self.key } diff --git a/protocols/kad/src/record/store/memory.rs b/protocols/kad/src/record/store/memory.rs index 1e450837..8a8726b4 100644 --- a/protocols/kad/src/record/store/memory.rs +++ b/protocols/kad/src/record/store/memory.rs @@ -111,9 +111,9 @@ impl<'a, TRecord: RecordT> RecordStore<'a, TRecord> for MemoryStore { } fn put(&'a mut self, r: TRecord) -> Result<()> { - // if r.value.len() >= self.config.max_value_bytes { - // return Err(Error::ValueTooLarge) - // } + if r.size() >= self.config.max_value_bytes { + return Err(Error::ValueTooLarge) + } let num_records = self.records.len();