]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: connection - Do not resume if there is nothing to resume into
authorAki Tuomi <aki.tuomi@dovecot.fi>
Fri, 23 Nov 2018 08:35:19 +0000 (10:35 +0200)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Tue, 27 Nov 2018 17:30:40 +0000 (19:30 +0200)
src/lib/connection.c

index 4255ff97944a1c68f094a461c605cb57884f9fbe..f62ff4abe1469a1e1236d805e37d598f10328a53 100644 (file)
@@ -128,20 +128,18 @@ void connection_input_halt(struct connection *conn)
 
 void connection_input_resume(struct connection *conn)
 {
-       const struct connection_settings *set = &conn->list->set;
-
        i_assert(!conn->disconnected);
 
-       if (conn->io != NULL)
-               return;
-       if (conn->from_streams || set->input_max_size != 0) {
+       if (conn->io != NULL) {
+               /* do nothing */
+       } else if (conn->input != NULL) {
                conn->io = io_add_istream_to(conn->ioloop, conn->input,
                                             *conn->list->v.input, conn);
-       } else {
+       } else if (conn->fd_in != -1) {
                conn->io = io_add_to(conn->ioloop, conn->fd_in, IO_READ,
                                     *conn->list->v.input, conn);
        }
-       if (conn->input_idle_timeout_secs != 0) {
+       if (conn->input_idle_timeout_secs != 0 && conn->to == NULL) {
                conn->to = timeout_add_to(conn->ioloop,
                                          conn->input_idle_timeout_secs*1000,
                                          *conn->list->v.idle_timeout, conn);