From: Stephan Bosch Date: Wed, 17 Jan 2018 01:50:05 +0000 (+0100) Subject: lib: connection: Allow switching to a specific ioloop. X-Git-Tag: 2.3.1~165 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=43b57457cc6b10b2d0b699b0730b4bed3b3bf954;p=thirdparty%2Fdovecot%2Fcore.git lib: connection: Allow switching to a specific ioloop. --- diff --git a/src/lib/connection.c b/src/lib/connection.c index 1a5d6b8bd4..a338666e27 100644 --- a/src/lib/connection.c +++ b/src/lib/connection.c @@ -426,16 +426,22 @@ const char *connection_input_timeout_reason(struct connection *conn) } } -void connection_switch_ioloop(struct connection *conn) +void connection_switch_ioloop_to(struct connection *conn, + struct ioloop *ioloop) { if (conn->io != NULL) - conn->io = io_loop_move_io(&conn->io); + conn->io = io_loop_move_io_to(ioloop, &conn->io); if (conn->to != NULL) - conn->to = io_loop_move_timeout(&conn->to); + conn->to = io_loop_move_timeout_to(ioloop, &conn->to); if (conn->input != NULL) - i_stream_switch_ioloop(conn->input); + i_stream_switch_ioloop_to(conn->input, ioloop); if (conn->output != NULL) - o_stream_switch_ioloop(conn->output); + o_stream_switch_ioloop_to(conn->output, ioloop); +} + +void connection_switch_ioloop(struct connection *conn) +{ + connection_switch_ioloop_to(conn, current_ioloop); } struct connection_list * diff --git a/src/lib/connection.h b/src/lib/connection.h index bdfde1d81a..ba355dfc05 100644 --- a/src/lib/connection.h +++ b/src/lib/connection.h @@ -3,6 +3,7 @@ #include "net.h" +struct ioloop; struct connection; enum connection_behavior { @@ -143,6 +144,8 @@ const char *connection_disconnect_reason(struct connection *conn); e.g. "No input for 10.023 secs". */ const char *connection_input_timeout_reason(struct connection *conn); +void connection_switch_ioloop_to(struct connection *conn, + struct ioloop *ioloop); void connection_switch_ioloop(struct connection *conn); struct connection_list *