assert(!*out);
while (state->epoll_cnt > 0) {
+ if (state->need_epoll) {
+ int r = refill_fdi_buffers(state, timeout);
+ if (r < 0)
+ return r;
+ state->need_epoll = false;
+ }
+
if (handle_flush(state, out))
return 0;
bool all_buffers_empty = false;
- state->need_epoll = false;
int r = put_logs_into_vector(state->data_fds, state->fd_count, &state->logs, state->filter_object, &state->need_epoll, &all_buffers_empty, out);
if (r < 0)
return r;
-
- int refill_err = 0;
- if (state->need_epoll)
- refill_err = refill_fdi_buffers(state, timeout);
-
if (*out)
return 0;
- // Don't do that immediately to prevent 'out' leaking
- if (refill_err)
- return refill_err;
-
set_flush_target(state, all_buffers_empty);
remove_drained_buffers(state);
}