Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
node: Don't connect to all peer's addresses
cloudhead committed 2 years ago
commit 2903b4f09a9404b1dc71402b0446286a684b31ca
parent b6751855388454acf691f47e705f5032fa6ab15f
1 file changed +11 -8
modified radicle-node/src/service.rs
@@ -1617,14 +1617,17 @@ where
        for (id, ka) in self
            .available_peers()
            .into_iter()
-
            .flat_map(|(nid, kas)| kas.into_iter().map(move |ka| (nid, ka)))
-
            .filter(|(_, ka)| match (ka.last_success, ka.last_attempt) {
-
                // If we succeeded the last time we tried, this is a good address.
-
                (Some(success), attempt) => success >= attempt.unwrap_or_default(),
-
                // If we haven't succeeded yet, and we waited long enough, we can try this address.
-
                (None, Some(attempt)) => now - attempt >= CONNECTION_RETRY_DELTA,
-
                // If we've never tried this address, it's worth a try.
-
                (None, None) => true,
+
            .filter_map(|(nid, kas)| {
+
                kas.into_iter()
+
                    .find(|ka| match (ka.last_success, ka.last_attempt) {
+
                        // If we succeeded the last time we tried, this is a good address.
+
                        (Some(success), attempt) => success >= attempt.unwrap_or_default(),
+
                        // If we haven't succeeded yet, and we waited long enough, we can try this address.
+
                        (None, Some(attempt)) => now - attempt >= CONNECTION_RETRY_DELTA,
+
                        // If we've never tried this address, it's worth a try.
+
                        (None, None) => true,
+
                    })
+
                    .map(|ka| (nid, ka))
            })
            .take(wanted)
        {