revert "Skip poll(2) if an imsgbuf has a non-empty read buffer" imsg_read() will call recvmsg() on the file descriptor regardless of the read buffer's state, so we should ensure that data is ready. The read buffer is used by imsg_get(), not imsg_read(). We already call imsg_get() before imsg_read(), and call the latter only if imsg_get() returns zero.
diff --git a/lib/privsep.c b/lib/privsep.c
index 135b8b6..782f94a 100644
--- a/lib/privsep.c
+++ b/lib/privsep.c
@@ -94,15 +94,9 @@ read_imsg(struct imsgbuf *ibuf)
const struct got_error *err;
size_t n;
- /*
- * There is no imsg API function to tell us whether the
- * read buffer still contains pending data :-(
- */
- if (ibuf->r.wpos < IMSG_HEADER_SIZE) {
- err = poll_fd(ibuf->fd, POLLIN, INFTIM);
- if (err)
- return err;
- }
+ err = poll_fd(ibuf->fd, POLLIN, INFTIM);
+ if (err)
+ return err;
n = imsg_read(ibuf);
if (n == -1) {