diff --git a/actix-server/src/accept.rs b/actix-server/src/accept.rs index f5346708..81dd87a1 100644 --- a/actix-server/src/accept.rs +++ b/actix-server/src/accept.rs @@ -189,27 +189,25 @@ impl Accept { loop { match self.poll.poll(&mut events, self.timeout) { - Ok(_) => { - for event in events.iter() { - let token = event.token(); - match token { - WAKER_TOKEN => { - let should_return = self.handle_waker(&mut sockets); - if should_return { - return; - } - } - _ => { - let token = usize::from(token); - self.accept(&mut sockets, token) - } + Ok(_) => {} + Err(e) if e.kind() == io::ErrorKind::Interrupted => {} + Err(e) => panic!("Poll error: {}", e), + } + + for event in events.iter() { + let token = event.token(); + match token { + WAKER_TOKEN => { + let should_return = self.handle_waker(&mut sockets); + if should_return { + return; } } + _ => { + let token = usize::from(token); + self.accept(&mut sockets, token) + } } - Err(e) => match e.kind() { - std::io::ErrorKind::Interrupted => {} - _ => panic!("Poll error: {}", e), - }, } // check for timeout and re-register sockets. diff --git a/actix-server/src/worker.rs b/actix-server/src/worker.rs index ffb0fa6d..a322caef 100644 --- a/actix-server/src/worker.rs +++ b/actix-server/src/worker.rs @@ -12,6 +12,7 @@ use std::{ }; use actix_rt::{ + task::yield_now, time::{sleep, Instant, Sleep}, System, }; @@ -304,8 +305,6 @@ impl ServerWorker { match res { Ok(services) => { - f(None); - let worker = ServerWorker { rx, rx2, @@ -320,6 +319,8 @@ impl ServerWorker { let worker = local.spawn_local(worker); handle.block_on(local.run_until(async { + yield_now().await; + f(None); let _ = worker.await; })); } @@ -344,8 +345,6 @@ impl ServerWorker { match res { Ok((services, rt)) => { - f(None); - let worker = ServerWorker { rx, rx2, @@ -360,6 +359,8 @@ impl ServerWorker { let handle = local.spawn_local(worker); local.block_on(&rt, async { + yield_now().await; + f(None); let _ = handle.await; }); } diff --git a/actix-server/tests/test_server.rs b/actix-server/tests/test_server.rs index de5c644e..42e7db84 100644 --- a/actix-server/tests/test_server.rs +++ b/actix-server/tests/test_server.rs @@ -36,7 +36,6 @@ fn test_bind() { }); let handle = rx.recv().unwrap(); - thread::sleep(Duration::from_millis(500)); assert!(net::TcpStream::connect(addr).is_ok()); let _ = handle.stop(true); let _ = h.join().unwrap();