diff options
Diffstat (limited to 'src/transport/libp2p')
| -rw-r--r-- | src/transport/libp2p/mod.rs | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/transport/libp2p/mod.rs b/src/transport/libp2p/mod.rs index 3c4ddf5..2290dea 100644 --- a/src/transport/libp2p/mod.rs +++ b/src/transport/libp2p/mod.rs @@ -658,6 +658,7 @@ impl Transport for Libp2pTransport { let stranger_reads = Arc::new(Semaphore::new(STRANGER_READS)); let probes = Arc::clone(&handler); let admission = Arc::clone(&self.admission); + let other_versions = Arc::new(wire::OtherVersions::default()); tokio::spawn(async move { while let Some((peer, stream)) = incoming.next().await { let limit = crate::transport::Admission::limit( @@ -686,6 +687,7 @@ impl Transport for Libp2pTransport { }; let sender = sender.clone(); let probes = Arc::clone(&probes); + let other_versions = Arc::clone(&other_versions); tokio::spawn(async move { match read_message(stream, limit).await { Ok(body) => match wire::decode(&body) { @@ -701,6 +703,9 @@ impl Transport for Libp2pTransport { Ok(message) => { let _ = sender.send((peer, message, body.len())).await; } + Err(wire::WireError::Version(version)) => { + other_versions.note(SCHEME, &peer.to_string(), version); + } Err(error) => { debug!(peer = %Addressed(SCHEME, &peer), error = %error, "Dropping a message that doesn't decode"); } |
