From ab584b034bcd36cf8c539905e333ef0be26b71db Mon Sep 17 00:00:00 2001 From: Nikolay Kim Date: Fri, 22 Mar 2024 22:33:30 +0100 Subject: [PATCH] wip --- ntex-server/src/signals.rs | 3 +-- ntex/src/server/accept.rs | 44 ++++++++++++++++++-------------------- 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/ntex-server/src/signals.rs b/ntex-server/src/signals.rs index d2ecdd53..b638403c 100644 --- a/ntex-server/src/signals.rs +++ b/ntex-server/src/signals.rs @@ -1,7 +1,5 @@ use std::thread; -use signal_hook::consts::signal::*; - use crate::server::Server; /// Different types of process signals @@ -26,6 +24,7 @@ pub(crate) fn start(srv: Server) { let _ = thread::Builder::new() .name("ntex-server signals".to_string()) .spawn(move || { + use signal_hook::consts::signal::*; use signal_hook::iterator::Signals; let sigs = vec![SIGHUP, SIGINT, SIGTERM, SIGQUIT]; diff --git a/ntex/src/server/accept.rs b/ntex/src/server/accept.rs index 581c6632..0a2ccd74 100644 --- a/ntex/src/server/accept.rs +++ b/ntex/src/server/accept.rs @@ -335,31 +335,29 @@ impl Accept { ServerStatus::Ready }); - if self.backpressure { - if !on { - // handle backlog - while let Some(msg) = self.backlog.pop_front() { - if let Err(msg) = self.srv.process(msg) { - log::trace!("Server is unavailable"); - self.backlog.push_front(msg); - return; - } - } - - // re-enable acceptors - self.backpressure = false; - for (key, info) in self.sockets.iter().enumerate() { - if info.timeout.get().is_none() { - // socket with timeout will re-register itself after timeout - log::info!( - "Resuming socket listener on {} after back-pressure", - info.addr - ); - self.add_source(key); - } + if self.backpressure && !on { + // handle backlog + while let Some(msg) = self.backlog.pop_front() { + if let Err(msg) = self.srv.process(msg) { + log::trace!("Server is unavailable"); + self.backlog.push_front(msg); + return; } } - } else if on { + + // re-enable acceptors + self.backpressure = false; + for (key, info) in self.sockets.iter().enumerate() { + if info.timeout.get().is_none() { + // socket with timeout will re-register itself after timeout + log::info!( + "Resuming socket listener on {} after back-pressure", + info.addr + ); + self.add_source(key); + } + } + } else if !self.backpressure && on { self.backpressure = true; for key in 0..self.sockets.len() { // disable err timeout