commit - fc4a38afafeec3a23f264e76659b3405d2d7cc48
commit + 926ee8364e8c83d7a22dcd5bceb65e235486703a
blob - 5fdc9aaf6d8e883142898ac8286585135a723535
blob + e65ba1ff5f86266696f18deedc4069455e3eae51
--- player.c
+++ player.c
if (halted != 0)
return IMSG_STOP;
- pfd.fd = ibuf->fd;
- pfd.events = POLLIN;
- if (poll(&pfd, 1, INFTIM) == -1)
- fatal("poll");
-
- if ((n = imsg_read(ibuf)) == -1 && errno != EAGAIN)
- fatalx("imsg_read");
- if (n == 0)
- fatalx("pipe closed");
-
+again:
if ((n = imsg_get(ibuf, &imsg)) == -1)
fatal("imsg_get");
- if (n == 0) /* no more messages */
- fatalx("expected at least a message");
+ if (n == 0) {
+ pfd.fd = ibuf->fd;
+ pfd.events = POLLIN;
+ if (poll(&pfd, 1, INFTIM) == -1)
+ fatal("poll");
+ if ((n = imsg_read(ibuf)) == -1 && errno != EAGAIN)
+ fatal("imsg_read");
+ if (n == 0)
+ fatalx("pipe closed");
+ goto again;
+ }
ret = imsg.hdr.type;
switch (imsg.hdr.type) {