diff options
| author | tv <tv@krebsco.de> | 2026-10-26 18:44:09 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-10-26 18:44:09 +0100 |
| commit | 8b7bf576d2b3ceb3e5b6cdae7a00989bebb3b4c4 (patch) | |
| tree | d0896b2d61fe12cdafb8571bfbf6449c3a2ebf20 /src/swarm/peer/inbound.rs | |
| parent | 27a996d3bf1b9e385602ff2cd7744d81057ef836 (diff) | |
add sync lanes
Diffstat (limited to 'src/swarm/peer/inbound.rs')
| -rw-r--r-- | src/swarm/peer/inbound.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/swarm/peer/inbound.rs b/src/swarm/peer/inbound.rs index 684a358..73cc629 100644 --- a/src/swarm/peer/inbound.rs +++ b/src/swarm/peer/inbound.rs @@ -12,12 +12,17 @@ use super::handshake::{ discover_peers, ensure_handshake, establish_peer, peer_swarm, remember_peer, send_hello_reply, }; use super::keepalive::{heal_if_diverged, local_keepalive, note_keepalive}; +use super::lanes::SyncLanes; use crate::state::AppState; -use crate::swarm::sync::{SyncEvent, handle_sync}; +use crate::swarm::sync::SyncEvent; use crate::transport::{self, ParsedMessage}; +/// Handles `message` from `peer` in arrival order, except that a sync message is only +/// queued here, on `lanes`: everything before it (admission, liveness, the peer's epoch) +/// is done in order, applying it isn't. pub(crate) async fn handle_message( state: &AppState, + lanes: &SyncLanes, peer: String, message: transport::ParsedMessage, ) -> Result<()> { @@ -130,7 +135,7 @@ pub(crate) async fn handle_message( return Ok(()); } crate::swarm::source::synced_from(state, &peer); - handle_sync(state, &peer, envelope).await?; + lanes.enqueue(&peer, envelope); } transport::ParsedMessage::Blob(blob) => { crate::swarm::blob::handle(state, &peer, blob).await; |
