From affded869cee02bd59561f75cb478134f5ee4adf Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Mon, 23 Apr 2018 15:05:06 +0300 Subject: [PATCH] doveadm save: Fix using cmd_input_fd, IO_READ, - doveadm_mail_cmd_input_input, ctx); - to = timeout_add(DOVEADM_MAIL_CMD_INPUT_TIMEOUT_MSECS, - doveadm_mail_cmd_input_timeout, ctx); - /* read the pending input from stream. */ + /* Read the pending input from stream. Delay adding the IO in case + we're reading from a file. That would cause a panic with epoll. */ io_loop_set_running(ioloop); doveadm_mail_cmd_input_input(ctx); - if (io_loop_is_running(ioloop)) + if (io_loop_is_running(ioloop)) { + io = io_add(ctx->cmd_input_fd, IO_READ, + doveadm_mail_cmd_input_input, ctx); + to = timeout_add(DOVEADM_MAIL_CMD_INPUT_TIMEOUT_MSECS, + doveadm_mail_cmd_input_timeout, ctx); io_loop_run(ioloop); - io_remove(&io); - timeout_remove(&to); + io_remove(&io); + timeout_remove(&to); + } io_loop_destroy(&ioloop); i_assert(ctx->cmd_input->eof);