summaryrefslogtreecommitdiff
path: root/cli/tokio_util.rs
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2019-04-28 14:15:15 -0700
committerGitHub <noreply@github.com>2019-04-28 14:15:15 -0700
commit1af02b405e99f40bfe76ca7dfb596e6de959106b (patch)
tree77e85f40a077093e9a733a6c2fc47d539b41bc70 /cli/tokio_util.rs
parenta4551c853e25a08ea479c5b75f60dc4109eee72f (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.rs21
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"),
};