Skip to content

Commit 93cb6cb

Browse files
committed
fix(libp2p): Use new Transport API for TorDialOnlyTransport
See libp2p/rust-libp2p#2652
1 parent f402c1a commit 93cb6cb

File tree

3 files changed

+31
-10
lines changed

3 files changed

+31
-10
lines changed

swap/src/cli/transport.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ pub fn new(
2121
) -> Result<Boxed<(PeerId, StreamMuxerBox)>> {
2222
let tcp = tcp::Config::new().nodelay(true);
2323
let tcp_with_dns = dns::tokio::Transport::system(tcp)?;
24-
24+
2525
let maybe_tor_transport = match maybe_tor_socks5_port {
2626
Some(port) => OptionalTransport::some(TorDialOnlyTransport::new(port)),
2727
None => OptionalTransport::none(),

swap/src/network/tor_transport.rs

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ use anyhow::Result;
22
use data_encoding::BASE32;
33
use futures::future::{BoxFuture, FutureExt, Ready};
44
use libp2p::core::multiaddr::{Multiaddr, Protocol};
5-
use libp2p::core::transport::TransportError;
5+
use libp2p::core::transport::{ListenerId, TransportError};
66
use libp2p::core::Transport;
7-
use libp2p::tcp::tokio::{Tcp, TcpStream};
7+
use libp2p::tcp::tokio::TcpStream;
88
use std::borrow::Cow;
99
use std::net::{Ipv4Addr, Ipv6Addr};
1010
use std::{fmt, io};
@@ -25,11 +25,14 @@ impl TorDialOnlyTransport {
2525
impl Transport for TorDialOnlyTransport {
2626
type Output = TcpStream;
2727
type Error = io::Error;
28-
type Listener = TcpListenStream<Tcp>;
2928
type ListenerUpgrade = Ready<Result<Self::Output, Self::Error>>;
3029
type Dial = BoxFuture<'static, Result<Self::Output, Self::Error>>;
3130

32-
fn listen_on(self, addr: Multiaddr) -> Result<Self::Listener, TransportError<Self::Error>> {
31+
fn listen_on(
32+
&mut self,
33+
id: ListenerId,
34+
addr: Multiaddr,
35+
) -> Result<(), TransportError<Self::Error>> {
3336
Err(TransportError::MultiaddrNotSupported(addr))
3437
}
3538

@@ -59,6 +62,7 @@ impl Transport for TorDialOnlyTransport {
5962
fn address_translation(&self, _: &Multiaddr, _: &Multiaddr) -> Option<Multiaddr> {
6063
None
6164
}
65+
6266
fn dial_as_listener(
6367
&mut self,
6468
addr: Multiaddr,
@@ -84,6 +88,25 @@ impl Transport for TorDialOnlyTransport {
8488

8589
Ok(dial_future.boxed())
8690
}
91+
92+
fn remove_listener(&mut self, id: ListenerId) -> bool {
93+
// TODO: Libp2p Upgrade: What do we need to do here?
94+
// I believe nothing because we are not using the transport to listen.
95+
false
96+
}
97+
98+
fn poll(
99+
self: std::pin::Pin<&mut Self>,
100+
cx: &mut std::task::Context<'_>,
101+
) -> std::task::Poll<libp2p::core::transport::TransportEvent<Self::ListenerUpgrade, Self::Error>>
102+
{
103+
// TODO: Libp2p Upgrade: What do we need to do here?
104+
// See: https://github.com/libp2p/rust-libp2p/pull/2652
105+
// I believe we do not need to do anything here because we are not using the transport to listen.
106+
// But we need to verify this before merging.
107+
108+
return std::task::Poll::Pending;
109+
}
87110
}
88111

89112
/// Represents an address that is _compatible_ with Tor, i.e. can be resolved by

swap/src/network/transport.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,9 @@ where
2222
T: AsyncRead + AsyncWrite + Unpin + Send + 'static,
2323
{
2424
let auth_upgrade = noise::Config::new(&identity);
25-
let multiplex_upgrade: SelectUpgrade<_, _> = SelectUpgrade::new(
26-
yamux::Config::default(),
27-
mplex::MplexConfig::new()
28-
);
29-
25+
let multiplex_upgrade: SelectUpgrade<_, _> =
26+
SelectUpgrade::new(yamux::Config::default(), mplex::MplexConfig::new());
27+
3028
let transport = transport
3129
.upgrade(Version::V1)
3230
.authenticate(auth_upgrade)

0 commit comments

Comments
 (0)