mirror of
https://github.com/feschber/lan-mouse.git
synced 2026-04-11 22:51:29 +03:00
dont use remote_addr
This commit is contained in:
@@ -23,7 +23,9 @@ pub(crate) enum LanMouseConnectionError {
|
|||||||
NoIps,
|
NoIps,
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn connect(addr: SocketAddr) -> Result<Arc<dyn Conn + Sync + Send>, LanMouseConnectionError> {
|
async fn connect(
|
||||||
|
addr: SocketAddr,
|
||||||
|
) -> Result<(Arc<dyn Conn + Sync + Send>, SocketAddr), LanMouseConnectionError> {
|
||||||
let conn = Arc::new(UdpSocket::bind("0.0.0.0:0").await?);
|
let conn = Arc::new(UdpSocket::bind("0.0.0.0:0").await?);
|
||||||
conn.connect(addr).await?;
|
conn.connect(addr).await?;
|
||||||
log::info!("connected to {addr}, establishing secure dtls channel ...");
|
log::info!("connected to {addr}, establishing secure dtls channel ...");
|
||||||
@@ -36,12 +38,12 @@ async fn connect(addr: SocketAddr) -> Result<Arc<dyn Conn + Sync + Send>, LanMou
|
|||||||
};
|
};
|
||||||
let dtls_conn: Arc<dyn Conn + Send + Sync> =
|
let dtls_conn: Arc<dyn Conn + Send + Sync> =
|
||||||
Arc::new(DTLSConn::new(conn, config, true, None).await?);
|
Arc::new(DTLSConn::new(conn, config, true, None).await?);
|
||||||
Ok(dtls_conn)
|
Ok((dtls_conn, addr))
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn connect_any(
|
async fn connect_any(
|
||||||
addrs: &[SocketAddr],
|
addrs: &[SocketAddr],
|
||||||
) -> Result<Arc<dyn Conn + Send + Sync>, LanMouseConnectionError> {
|
) -> Result<(Arc<dyn Conn + Send + Sync>, SocketAddr), LanMouseConnectionError> {
|
||||||
let mut joinset = JoinSet::new();
|
let mut joinset = JoinSet::new();
|
||||||
for &addr in addrs {
|
for &addr in addrs {
|
||||||
joinset.spawn_local(connect(addr));
|
joinset.spawn_local(connect(addr));
|
||||||
@@ -84,8 +86,7 @@ impl LanMouseConnection {
|
|||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|a| SocketAddr::new(a, port))
|
.map(|a| SocketAddr::new(a, port))
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
let conn = connect_any(&addrs).await?;
|
let (conn, addr) = connect_any(&addrs).await?;
|
||||||
let addr = conn.remote_addr().expect("no remote addr");
|
|
||||||
self.server.set_active_addr(handle, addr);
|
self.server.set_active_addr(handle, addr);
|
||||||
conn.send(buf).await?;
|
conn.send(buf).await?;
|
||||||
return Ok(());
|
return Ok(());
|
||||||
|
|||||||
Reference in New Issue
Block a user