diff --git a/logd/src/main.rs b/logd/src/main.rs index b1db6d2beb..06aca1d8e0 100644 --- a/logd/src/main.rs +++ b/logd/src/main.rs @@ -22,11 +22,15 @@ fn daemon(daemon: daemon::SchemeDaemon) -> ! { .next_request(SignalBehavior::Restart) .expect("logd: failed to read events from log scheme") { - let request = match request.kind() { - RequestKind::Call(call) => call, + match request.kind() { + RequestKind::Call(call) => { + let response = call.handle_sync(&mut scheme, &mut state); + socket + .write_response(response, SignalBehavior::Restart) + .expect("logd: failed to write responses to log scheme"); + } RequestKind::OnClose { id } => { scheme.on_close(id); - continue; } RequestKind::SendFd(sendfd_request) => { let result = scheme.on_sendfd(&sendfd_request); @@ -34,15 +38,9 @@ fn daemon(daemon: daemon::SchemeDaemon) -> ! { socket .write_response(resp, SignalBehavior::Restart) .expect("logd: failed to write responses to log scheme"); - continue; } - _ => continue, + _ => {} }; - - let response = request.handle_sync(&mut scheme, &mut state); - socket - .write_response(response, SignalBehavior::Restart) - .expect("logd: failed to write responses to log scheme"); } process::exit(0); } diff --git a/netstack/src/scheme/netcfg/mod.rs b/netstack/src/scheme/netcfg/mod.rs index 978be20037..269c28c81f 100644 --- a/netstack/src/scheme/netcfg/mod.rs +++ b/netstack/src/scheme/netcfg/mod.rs @@ -4,7 +4,7 @@ mod notifier; use redox_scheme::{ scheme::{register_scheme_inner, SchemeState, SchemeSync}, - CallerCtx, OpenResult, RequestKind, Response, SignalBehavior, Socket, + CallerCtx, OpenResult, RequestKind, SignalBehavior, Socket, }; use scheme_utils::HandleMap; use smoltcp::wire::{EthernetAddress, IpAddress, IpCidr, Ipv4Address}; @@ -386,33 +386,22 @@ impl NetCfgScheme { } }; - let req = match request.kind() { - RequestKind::Call(c) => c, + match request.kind() { + RequestKind::Call(c) => { + let resp = c.handle_sync(&mut self.inner, &mut self.state); + let _ = self + .inner + .scheme_file + .write_response(resp, SignalBehavior::Restart) + .map_err(|e| { + Error::from_syscall_error(e.into(), "failed to write response") + })?; + } RequestKind::OnClose { id } => { self.inner.on_close(id); - continue; } - _ => { - continue; - } - }; - let caller = req.caller(); - let op = match req.op() { - Ok(op) => op, - Err(req) => { - self.inner.scheme_file.write_response( - Response::err(syscall::EOPNOTSUPP, req), - SignalBehavior::Restart, - ); - continue; - } - }; - let resp = op.handle_sync(caller, &mut self.inner, &mut self.state); - let _ = self - .inner - .scheme_file - .write_response(resp, SignalBehavior::Restart) - .map_err(|e| Error::from_syscall_error(e.into(), "failed to write response"))?; + _ => {} + } }; self.inner.notify_scheduled_fds(); Ok(result)