Skip to content

Commit 5283edd

Browse files
Merge 3ae5152 into fc24a92
2 parents fc24a92 + 3ae5152 commit 5283edd

File tree

2 files changed

+28
-28
lines changed

2 files changed

+28
-28
lines changed

iroh-net-report/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ impl Default for Reports {
217217
///
218218
/// Use [`Options::stun_v4`], [`Options::stun_v6`], and [`Options::quic_config`]
219219
/// to enable STUN over IPv4, STUN over IPv6, and QUIC address discovery.
220-
#[derive(Debug)]
220+
#[derive(Debug, Clone)]
221221
pub struct Options {
222222
/// Socket to send IPv4 STUN probes from.
223223
///

iroh/src/magicsock.rs

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1740,6 +1740,28 @@ impl Handle {
17401740
let inner2 = inner.clone();
17411741
let network_monitor = netmon::Monitor::new().await?;
17421742
let qad_endpoint = endpoint.clone();
1743+
1744+
// create a client config for the endpoint to use for QUIC address discovery
1745+
let root_store =
1746+
rustls::RootCertStore::from_iter(webpki_roots::TLS_SERVER_ROOTS.iter().cloned());
1747+
let client_config = rustls::client::ClientConfig::builder_with_provider(Arc::new(
1748+
rustls::crypto::ring::default_provider(),
1749+
))
1750+
.with_safe_default_protocol_versions()
1751+
.expect("ring supports these")
1752+
.with_root_certificates(root_store)
1753+
.with_no_client_auth();
1754+
let quic_config = Some(QuicConfig {
1755+
ep: qad_endpoint,
1756+
client_config,
1757+
ipv4: true,
1758+
ipv6: pconn6_sock.is_some(),
1759+
});
1760+
let net_report_config = net_report::Options::default()
1761+
.stun_v4(Some(pconn4_sock.clone()))
1762+
.stun_v6(pconn6_sock.clone())
1763+
.quic_config(quic_config);
1764+
17431765
actor_tasks.spawn(
17441766
async move {
17451767
let actor = Actor {
@@ -1756,7 +1778,7 @@ impl Handle {
17561778
no_v4_send: false,
17571779
net_reporter,
17581780
network_monitor,
1759-
qad_endpoint,
1781+
net_report_config,
17601782
};
17611783

17621784
if let Err(err) = actor.run().await {
@@ -2172,6 +2194,9 @@ struct Actor {
21722194
pconn4: Arc<UdpSocket>,
21732195
pconn6: Option<Arc<UdpSocket>>,
21742196

2197+
/// Configuration for net report
2198+
net_report_config: net_report::Options,
2199+
21752200
/// The NAT-PMP/PCP/UPnP prober/client, for requesting port mappings from NAT devices.
21762201
port_mapper: portmapper::Client,
21772202

@@ -2184,11 +2209,6 @@ struct Actor {
21842209
net_reporter: net_report::Client,
21852210

21862211
network_monitor: netmon::Monitor,
2187-
2188-
/// The internal quinn::Endpoint
2189-
///
2190-
/// Needed for Quic Address Discovery
2191-
qad_endpoint: quinn::Endpoint,
21922212
}
21932213

21942214
impl Actor {
@@ -2602,27 +2622,7 @@ impl Actor {
26022622
}
26032623

26042624
let relay_map = self.msock.relay_map.clone();
2605-
let mut opts = net_report::Options::default()
2606-
.stun_v4(Some(self.pconn4.clone()))
2607-
.stun_v6(self.pconn6.clone());
2608-
2609-
// create a client config for the endpoint to use for QUIC address discovery
2610-
let root_store =
2611-
rustls::RootCertStore::from_iter(webpki_roots::TLS_SERVER_ROOTS.iter().cloned());
2612-
let client_config = rustls::client::ClientConfig::builder_with_provider(Arc::new(
2613-
rustls::crypto::ring::default_provider(),
2614-
))
2615-
.with_safe_default_protocol_versions()
2616-
.expect("ring supports these")
2617-
.with_root_certificates(root_store)
2618-
.with_no_client_auth();
2619-
let quic_config = Some(QuicConfig {
2620-
ep: self.qad_endpoint.clone(),
2621-
client_config,
2622-
ipv4: true,
2623-
ipv6: self.pconn6.is_some(),
2624-
});
2625-
opts = opts.quic_config(quic_config);
2625+
let opts = self.net_report_config.clone();
26262626

26272627
debug!("requesting net_report report");
26282628
match self.net_reporter.get_report_channel(relay_map, opts).await {

0 commit comments

Comments
 (0)