diff options
-rw-r--r-- | lib/src/reactor/gossip/mod.rs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/src/reactor/gossip/mod.rs b/lib/src/reactor/gossip/mod.rs index d84f985..809ccb0 100644 --- a/lib/src/reactor/gossip/mod.rs +++ b/lib/src/reactor/gossip/mod.rs @@ -65,7 +65,17 @@ impl GossipReactor { Ok(()) }, - Some((GossipRequest::PublishMe, reply_channel)) => self.publish_me(reply_channel).await + Some((GossipRequest::PublishMe, reply_channel)) => self.publish_me(reply_channel).await, + + Some((GossipRequest::Connect(addr), reply_channel)) => { + let reply = GossipReply::ConnectResult(self.connect(addr.clone()).await); + if let Err(_) = Self::send_gossip_reply(reply_channel, reply) { + anyhow::bail!("Failed sending Connect({}) reply", addr) + } + + Ok(()) + }, + } } @@ -103,6 +113,10 @@ impl GossipReactor { } } + async fn connect(&self, addr: ipfs::MultiaddrWithPeerId) -> Result<()> { + self.inner.profile().read().await.client().connect(addr).await + } + async fn handle_gossip_message(&self, msg: Arc<ipfs::PubsubMessage>) -> Result<()> { use std::convert::TryFrom; |