From 55b5ab54aa630e975ffbe5e30fae0b89b59abdb4 Mon Sep 17 00:00:00 2001
From: Paul Olteanu
Date: Thu, 9 Jan 2025 01:22:43 -0500
Subject: [PATCH 1/2] add timeout on tls accept
---
iroh-relay/src/server/http_server.rs | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/iroh-relay/src/server/http_server.rs b/iroh-relay/src/server/http_server.rs
index 0f367c464d..68b0e5ebfb 100644
--- a/iroh-relay/src/server/http_server.rs
+++ b/iroh-relay/src/server/http_server.rs
@@ -644,7 +644,11 @@ impl RelayService {
},
TlsAcceptor::Manual(a) => {
debug!("TLS[manual]: accept");
- let tls_stream = a.accept(stream).await.context("TLS[manual] accept")?;
+ let tls_stream = tokio::time::timeout(Duration::from_secs(30), a.accept(stream))
+ .await
+ .context("TLS[manual] timeout")?
+ .context("TLS[manual] accept")?;
+
self.serve_connection(MaybeTlsStream::Tls(tls_stream))
.await
.context("TLS[manual] serve connection")?;
From 5ab51039786cbe1b46dec7a6cfc1f061934b3f22 Mon Sep 17 00:00:00 2001
From: Paul Olteanu
Date: Wed, 15 Jan 2025 23:39:34 -0500
Subject: [PATCH 2/2] fix circular await
---
iroh-relay/src/server/client.rs | 4 +---
iroh-relay/src/server/clients.rs | 3 +--
2 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/iroh-relay/src/server/client.rs b/iroh-relay/src/server/client.rs
index bc9a4b4849..152d8883d6 100644
--- a/iroh-relay/src/server/client.rs
+++ b/iroh-relay/src/server/client.rs
@@ -221,9 +221,7 @@ impl Actor {
}
}
- self.clients
- .unregister(self.connection_id, self.node_id)
- .await;
+ self.clients.unregister(self.connection_id, self.node_id);
}
async fn run_inner(&mut self, done: CancellationToken) -> Result<()> {
diff --git a/iroh-relay/src/server/clients.rs b/iroh-relay/src/server/clients.rs
index 2f60d7b078..f7030a2ff1 100644
--- a/iroh-relay/src/server/clients.rs
+++ b/iroh-relay/src/server/clients.rs
@@ -71,7 +71,7 @@ impl Clients {
/// peer is gone from the network.
///
/// Must be passed a matching connection_id.
- pub(super) async fn unregister(&self, connection_id: u64, node_id: NodeId) {
+ pub(super) fn unregister(&self, connection_id: u64, node_id: NodeId) {
trace!(
node_id = node_id.fmt_short(),
connection_id,
@@ -102,7 +102,6 @@ impl Clients {
}
}
}
- client.shutdown().await;
}
}