client_connection_set_proctitle(conn, cmd_name);
o_stream_cork(conn->output);
+ /* Disable IO while running a command. This is required for commands
+ that do IO themselves (e.g. dsync-server). */
+ io_remove(&conn->io);
if (doveadm_cmd_handle(conn, cmd_name, argc-2, (const char**)(args+2), &cctx) < 0)
o_stream_nsend(conn->output, "\n-\n", 3);
o_stream_uncork(conn->output);
+ conn->io = io_add_istream(conn->input, client_connection_input, conn);
client_connection_set_proctitle(conn, "");
/* flush the output and possibly run next command */
conn->name = conn->remote_ip.family == 0 ? "<local>" :
p_strdup(pool, net_ip2addr(&conn->remote_ip));
- conn->io = io_add(fd, IO_READ, client_connection_input, conn);
conn->input = i_stream_create_fd(fd, MAX_INBUF_SIZE, FALSE);
conn->output = o_stream_create_fd(fd, (size_t)-1, FALSE);
i_stream_set_name(conn->input, conn->name);
return NULL;
}
}
+ /* add IO after SSL istream is created */
+ conn->io = io_add_istream(conn->input, client_connection_input, conn);
conn->preauthenticated =
client_connection_is_preauthenticated(listen_fd);