diff --git a/examples/r2d2/src/main.rs b/examples/r2d2/src/main.rs index 2efc64b9f..4c6ebfc9a 100644 --- a/examples/r2d2/src/main.rs +++ b/examples/r2d2/src/main.rs @@ -44,6 +44,7 @@ fn main() { let _ = env_logger::init(); let sys = actix::System::new("r2d2-example"); + // r2d2 pool let manager = SqliteConnectionManager::file("test.db"); let pool = r2d2::Pool::new(manager).unwrap(); diff --git a/src/server/srv.rs b/src/server/srv.rs index 4f1d5c206..63f23d245 100644 --- a/src/server/srv.rs +++ b/src/server/srv.rs @@ -666,11 +666,21 @@ fn start_accept_thread(sock: net::TcpListener, addr: net::SocketAddr, backlog: i } } }, - Command::Stop => return, + Command::Stop => { + if let Some(server) = server.take() { + let _ = poll.deregister(&server); + } + return + }, }, Err(err) => match err { sync_mpsc::TryRecvError::Empty => (), - sync_mpsc::TryRecvError::Disconnected => return, + sync_mpsc::TryRecvError::Disconnected => { + if let Some(server) = server.take() { + let _ = poll.deregister(&server); + } + return + }, } }, _ => unreachable!(),