diff --git a/src/main.rs b/src/main.rs index 9b450c9cac..5685f96a7f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -71,12 +71,17 @@ fn daemon(daemon: Daemon) -> Result<()> { let mut pending = Vec::new(); loop { - if let Some(request) = socket.next_request(SignalBehavior::Restart)? { - match request.handle_scheme_block_mut(&mut *scheme.lock().unwrap()) { + match socket.next_request(SignalBehavior::Interrupt) { + Ok(Some(request)) => match request.handle_scheme_block_mut(&mut *scheme.lock().unwrap()) { Ok(response) => { socket.write_responses(&[response], SignalBehavior::Restart)?; } Err(request) => pending.push(request), + }, + Ok(None) => {}, + Err(err) => match err.errno { + libredox::errno::EINTR => {}, + _ => return Err(err), } }