diff options
| author | bors <bors@rust-lang.org> | 2022-11-11 17:29:10 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-11-11 17:29:10 +0000 |
| commit | 7d85104b96fb2ffe7b638ffbfb1794ef5652bdcf (patch) | |
| tree | b71aa551bae9a348b5f6a31cd199927eab4a0ac5 /src/tools | |
| parent | 742d3f02c243964e5b868d90afd60c2907be5853 (diff) | |
| parent | 378112034e05e38690359df934ebf5d0d6aec0be (diff) | |
| download | rust-7d85104b96fb2ffe7b638ffbfb1794ef5652bdcf.tar.gz rust-7d85104b96fb2ffe7b638ffbfb1794ef5652bdcf.zip | |
Auto merge of #104289 - Dylan-DPC:rollup-v7wei2t, r=Dylan-DPC
Rollup of 9 pull requests Successful merges: - #100633 (Consider `#[must_use]` annotation on `async fn` as also affecting the `Future::Output`) - #103445 (`#[test]`: Point at return type if `Termination` bound is unsatisfied) - #103924 (Fix broken link in description of error code E0706) - #104146 (Retry binding TCP Socket in remote-test-server) - #104169 (Migrate `:target` rules to use CSS variables) - #104202 (Fix ICE #103748) - #104216 (Don't ICE on operator trait methods with generic methods) - #104217 (Display help message when fluent arg was referenced incorrectly) - #104245 (Reduce default configuration's dependency upon static libstdcpp library (#103606)) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'src/tools')
| -rw-r--r-- | src/tools/remote-test-server/src/main.rs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/tools/remote-test-server/src/main.rs b/src/tools/remote-test-server/src/main.rs index ec992da6812..8e7c39e72b6 100644 --- a/src/tools/remote-test-server/src/main.rs +++ b/src/tools/remote-test-server/src/main.rs @@ -39,6 +39,8 @@ macro_rules! t { } static TEST: AtomicUsize = AtomicUsize::new(0); +const RETRY_INTERVAL: u64 = 1; +const NUMBER_OF_RETRIES: usize = 5; #[derive(Copy, Clone)] struct Config { @@ -115,7 +117,7 @@ fn main() { let config = Config::parse_args(); println!("starting test server"); - let listener = t!(TcpListener::bind(config.bind)); + let listener = bind_socket(config.bind); let (work, tmp): (PathBuf, PathBuf) = if cfg!(target_os = "android") { ("/data/local/tmp/work".into(), "/data/local/tmp/work/tmp".into()) } else { @@ -159,6 +161,16 @@ fn main() { } } +fn bind_socket(addr: SocketAddr) -> TcpListener { + for _ in 0..(NUMBER_OF_RETRIES - 1) { + if let Ok(x) = TcpListener::bind(addr) { + return x; + } + std::thread::sleep(std::time::Duration::from_secs(RETRY_INTERVAL)); + } + TcpListener::bind(addr).unwrap() +} + fn handle_push(socket: TcpStream, work: &Path, config: Config) { let mut reader = BufReader::new(socket); let dst = recv(&work, &mut reader); |
