]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: connection - support per-connection input idle timeout
authorAki Tuomi <aki.tuomi@dovecot.fi>
Mon, 19 Nov 2018 12:58:54 +0000 (14:58 +0200)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Mon, 26 Nov 2018 11:33:27 +0000 (13:33 +0200)
src/lib/connection.c
src/lib/connection.h

index fe9ea3e91b6571bbdb0704ade806b6b31e6704b0..a87a40d4db0fa6384c0ea6a84d5d99e40d5bb733 100644 (file)
@@ -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)
index ff2158b8a7ab227bead6f7918994977ed6b57b2f..202daf0bcfc7afe91f8e738cf6bc5d4e33d48450 100644 (file)
@@ -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;