Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
node: Small fix to allow reconnections
cloudhead committed 2 years ago
commit 9cf6fab7c8bd043a2fcd7d10eeb7ebf7bdb5e2fc
parent 8eac221f4c07752530498fb4410af068a9c07b43
1 file changed +6 -5
modified radicle-node/src/service.rs
@@ -2059,13 +2059,14 @@ where
                    .into_iter()
                    .find(|ka| match (ka.last_success, ka.last_attempt) {
                        // If we succeeded the last time we tried, this is a good address.
-
                        // TODO: This will always be hit after a success, and never re-attempted after
-
                        //       the first failed attempt.
-
                        (Some(success), attempt) => success >= attempt.unwrap_or_default(),
+
                        // If it's been long enough that we failed to connect, we also try again.
+
                        (Some(success), Some(attempt)) => {
+
                            success >= attempt || now - attempt >= CONNECTION_RETRY_DELTA
+
                        }
                        // 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,
+
                        // If we have no failed attempts for this address, it's worth a try.
+
                        (_, None) => true,
                    })
                    .map(|ka| (peer.nid, ka))
            })