diff options
author | Mikhail Burakov <mburakov@mailbox.org> | 2022-07-30 11:40:09 +0200 |
---|---|---|
committer | Mikhail Burakov <mburakov@mailbox.org> | 2022-07-30 11:40:09 +0200 |
commit | cc9e94c1bc73891dbdad37fcdfa8b6b21b5a2bb6 (patch) | |
tree | cf73eb98a253597eceed6f9ce4bdce93ebe7a9b7 /io_muxer.c | |
parent | f5d91c44031aac643ea68903f7b50b126fd0c7b2 (diff) |
Only return from muxer on error or timeout
Diffstat (limited to 'io_muxer.c')
-rw-r--r-- | io_muxer.c | 17 |
1 files changed, 9 insertions, 8 deletions
@@ -84,15 +84,16 @@ int IoMuxer_OnWrite(struct IoMuxer* io_muxer, int fd, return 0; } -int IoMuxer_Iterate(struct IoMuxer* io_muxer) { - CompressRecords(io_muxer); - int result = poll(io_muxer->pfds, io_muxer->size, -1); - if (result <= 0) return -1; - for (size_t i = 0; i < io_muxer->size; i++) { - if (io_muxer->pfds[i].revents) - io_muxer->closures[i].callback(io_muxer->closures[i].user); +int IoMuxer_Iterate(struct IoMuxer* io_muxer, int timeout) { + for (;;) { + CompressRecords(io_muxer); + int result = poll(io_muxer->pfds, io_muxer->size, timeout); + if (result <= 0) return result; + for (size_t i = 0; i < io_muxer->size; i++) { + if (io_muxer->pfds[i].revents) + io_muxer->closures[i].callback(io_muxer->closures[i].user); + } } - return 0; } void IoMuxer_Destroy(struct IoMuxer* io_muxer) { |