diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2019-04-28 14:15:15 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-28 14:15:15 -0700 |
commit | 1af02b405e99f40bfe76ca7dfb596e6de959106b (patch) | |
tree | 77e85f40a077093e9a733a6c2fc47d539b41bc70 /cli/tokio_util.rs | |
parent | a4551c853e25a08ea479c5b75f60dc4109eee72f (diff) |
Revert "recover: #1517 Kill all pending accepts when TCP listener is closed (#2224)" (#2239)
Crashes while running wrk against
js/deps/https/deno.land/std/http/http_bench.ts
This reverts commit 972ac03858cc11e8b6bb759ee69640d17235580d.
Diffstat (limited to 'cli/tokio_util.rs')
-rw-r--r-- | cli/tokio_util.rs | 21 |
1 files changed, 2 insertions, 19 deletions
diff --git a/cli/tokio_util.rs b/cli/tokio_util.rs index a57cbbd2e..e1f8587c3 100644 --- a/cli/tokio_util.rs +++ b/cli/tokio_util.rs @@ -78,31 +78,14 @@ pub fn accept(r: Resource) -> Accept { pub struct Accept { state: AcceptState, } + impl Future for Accept { type Item = (TcpStream, SocketAddr); type Error = io::Error; fn poll(&mut self) -> Poll<Self::Item, Self::Error> { let (stream, addr) = match self.state { - // Similar to try_ready!, but also track/untrack accept task - // in TcpListener resource. - // In this way, when the listener is closed, the task can be - // notified to error out (instead of stuck forever). - AcceptState::Pending(ref mut r) => match r.poll_accept() { - Ok(futures::prelude::Async::Ready(t)) => { - r.untrack_task(); - t - } - Ok(futures::prelude::Async::NotReady) => { - // Would error out if another accept task is being tracked. - r.track_task()?; - return Ok(futures::prelude::Async::NotReady); - } - Err(e) => { - r.untrack_task(); - return Err(From::from(e)); - } - }, + AcceptState::Pending(ref mut r) => try_ready!(r.poll_accept()), AcceptState::Empty => panic!("poll Accept after it's done"), }; |