From: Aki Tuomi Date: Mon, 19 Nov 2018 12:58:54 +0000 (+0200) Subject: lib: connection - support per-connection input idle timeout X-Git-Tag: 2.3.9~1073 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5fe15080ffdf95eeab1bf10eaafe1066dcaee2e1;p=thirdparty%2Fdovecot%2Fcore.git lib: connection - support per-connection input idle timeout --- diff --git a/src/lib/connection.c b/src/lib/connection.c index fe9ea3e91b..a87a40d4db 100644 --- a/src/lib/connection.c +++ b/src/lib/connection.c @@ -174,9 +174,9 @@ static void connection_init_streams(struct connection *conn) o_stream_switch_ioloop_to(conn->output, conn->ioloop); } connection_input_resume(conn); - if (set->input_idle_timeout_secs != 0) { + if (conn->input_idle_timeout_secs != 0) { conn->to = timeout_add_to(conn->ioloop, - set->input_idle_timeout_secs*1000, + conn->input_idle_timeout_secs*1000, connection_idle_timeout, conn); } if (set->major_version != 0 && !set->dont_send_version) { @@ -232,6 +232,10 @@ void connection_init(struct connection_list *list, i_free(conn->name); + if (list->set.input_idle_timeout_secs != 0 && + conn->input_idle_timeout_secs == 0) + conn->input_idle_timeout_secs = list->set.input_idle_timeout_secs; + if (conn->event == NULL) conn->event = event_create(conn->event_parent); if (list->set.debug) diff --git a/src/lib/connection.h b/src/lib/connection.h index ff2158b8a7..202daf0bcf 100644 --- a/src/lib/connection.h +++ b/src/lib/connection.h @@ -87,6 +87,7 @@ struct connection { struct istream *input; struct ostream *output; + unsigned int input_idle_timeout_secs; struct timeout *to; time_t last_input; struct timeval last_input_tv;