Merge pull request #364 from av-gal/private-no-pex

Do not exchange peers or torrent metadata in private swarms/
This commit is contained in:
Igor Katson 2025-04-22 13:32:12 +09:00 committed by GitHub
commit bde5a2e634
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -990,11 +990,27 @@ impl PeerConnectionHandler for &PeerHandler {
Message::Extended(ExtendedMessage::UtMetadata(UtMetadata::Request( Message::Extended(ExtendedMessage::UtMetadata(UtMetadata::Request(
metadata_piece_id, metadata_piece_id,
))) => { ))) => {
self.send_metadata_piece(metadata_piece_id) if self.state.metadata.info.private {
.with_context(|| format!("error sending metadata piece {metadata_piece_id}"))?; warn!(
"recieved noncompliant ut_metadata message from {}, ignoring",
self.addr
);
} else {
self.send_metadata_piece(metadata_piece_id)
.with_context(|| {
format!("error sending metadata piece {metadata_piece_id}")
})?;
}
} }
Message::Extended(ExtendedMessage::UtPex(pex)) => { Message::Extended(ExtendedMessage::UtPex(pex)) => {
self.on_pex_message(pex); if self.state.metadata.info.private {
warn!(
"recieved noncompliant PEX message from {}, ignoring",
self.addr
);
} else {
self.on_pex_message(pex);
}
} }
message => { message => {
warn!("received unsupported message {:?}, ignoring", message); warn!("received unsupported message {:?}, ignoring", message);
@ -1032,7 +1048,7 @@ impl PeerConnectionHandler for &PeerHandler {
} }
fn on_extended_handshake(&self, hs: &ExtendedHandshake<ByteBuf>) -> anyhow::Result<()> { fn on_extended_handshake(&self, hs: &ExtendedHandshake<ByteBuf>) -> anyhow::Result<()> {
if let Some(_peer_pex_msg_id) = hs.ut_pex() { if !self.state.metadata.info.private && hs.ut_pex().is_some() {
self.state.clone().spawn( self.state.clone().spawn(
error_span!( error_span!(
parent: self.state.shared.span.clone(), parent: self.state.shared.span.clone(),