1
0
Fork 0
mirror of https://github.com/actix/actix-web.git synced 2024-11-23 10:01:06 +00:00

set socket linger to 0 on timeout

This commit is contained in:
Nikolay Kim 2018-10-01 20:53:22 -07:00
parent 1bac65de4c
commit e4686f6c8d

View file

@ -1,6 +1,6 @@
use std::collections::VecDeque; use std::collections::VecDeque;
use std::net::SocketAddr; use std::net::{Shutdown, SocketAddr};
use std::time::Instant; use std::time::{Duration, Instant};
use bytes::BytesMut; use bytes::BytesMut;
use futures::{Async, Future, Poll}; use futures::{Async, Future, Poll};
@ -239,6 +239,12 @@ where
if self.tasks.is_empty() { if self.tasks.is_empty() {
// if we get timer during shutdown, just drop connection // if we get timer during shutdown, just drop connection
if self.flags.contains(Flags::SHUTDOWN) { if self.flags.contains(Flags::SHUTDOWN) {
let io = self.stream.get_mut();
let _ = IoStream::set_linger(
io,
Some(Duration::from_secs(0)),
);
let _ = IoStream::shutdown(io, Shutdown::Both);
return Err(HttpDispatchError::ShutdownTimeout); return Err(HttpDispatchError::ShutdownTimeout);
} else { } else {
trace!("Keep-alive timeout, close connection"); trace!("Keep-alive timeout, close connection");