From 106b83b9e3ff690447572f1ce6162ba39026d0ba Mon Sep 17 00:00:00 2001 From: Laurence Tratt Date: Tue, 29 Sep 2026 09:54:29 +0100 Subject: [PATCH] Handle errors from `poll`. The most critical thing I should have dealt with before is `EINTR`. Oh well. --- src/jobrunner.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/jobrunner.rs b/src/jobrunner.rs index 80061d7..bf211ee 100644 --- a/src/jobrunner.rs +++ b/src/jobrunner.rs @@ -26,6 +26,7 @@ use std::{ use libc::{c_int, ioctl}; use nix::{ + errno::Errno, fcntl::{fcntl, FcntlArg, OFlag}, poll::{poll, PollFd, PollFlags}, sys::signal::{kill, Signal}, @@ -117,7 +118,14 @@ impl JobRunner { } }; - poll(&mut self.pollfds, timeout).ok(); + match poll(&mut self.pollfds, timeout) { + Ok(_) => (), + Err(Errno::EINTR) => continue, + Err(e) => { + self.snare.error(&format!("poll error: {e}",)); + continue; + } + } self.check_for_sighup();