src: filter out own beacons

This commit is contained in:
Ujjwal Sharma 2021-04-05 22:31:00 +05:30
parent ad7db7481d
commit ac40319249
Signed by: ryzokuken
GPG Key ID: 460B292812C67D9F
3 changed files with 4 additions and 4 deletions

View File

@ -8,7 +8,7 @@ use std::collections::HashSet;
use crate::keypair::SSBPublicKey;
use crate::peer::{Address, Handshake, Peer, Protocol};
pub async fn recv(sender: async_std::channel::Sender<Peer>) {
pub async fn recv(sender: async_std::channel::Sender<Peer>, pubkey: Arc<PublicKey>) {
let socket = UdpSocket::bind(":::8008").await.unwrap();
let mut buf = [0u8; 1024];
let mut old = HashSet::new();
@ -19,7 +19,7 @@ pub async fn recv(sender: async_std::channel::Sender<Peer>) {
let packet = String::from_utf8(buf.to_vec()).unwrap();
log::debug!("Recieved discovery beacon: {}", packet);
let peer = Peer::from_discovery_packet(packet.as_str());
if !old.contains(&peer) {
if peer.key.to_base64() != pubkey.to_base64() && !old.contains(&peer) {
old.insert(peer.clone());
sender.send(peer).await.unwrap();
}

View File

@ -38,7 +38,7 @@ async fn main() {
let keypair = Keypair::read_or_generate(path.join("secret")).await;
let (psend, precv) = async_std::channel::unbounded();
task::spawn(async move { discovery::recv(psend).await });
task::spawn(discovery::recv(psend, Arc::new(keypair.public)));
task::spawn(discovery::send(Arc::new(keypair.public.to_base64())));
while let Ok(peer) = precv.recv().await {

View File

@ -40,7 +40,7 @@ impl Address {
#[derive(Clone)]
pub struct Peer {
addresses: Vec<Address>,
key: PublicKey,
pub key: PublicKey,
}
impl Peer {