]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
director: Add director_output_buffer_size setting
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Wed, 25 Oct 2017 14:18:03 +0000 (17:18 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 7 Nov 2017 19:11:04 +0000 (21:11 +0200)
This allows configuring the max buffer size for outgoing connections.
Previously it was hardcoded to 10 MB, which wasn't necessarily enough for
very busy directors.

src/director/director-connection.c
src/director/director-settings.c
src/director/director-settings.h

index 5ee4ae34f06b9d8a7a0009f312f9d64e583f8e9a..d5bd5335e4ce7c03c5444420f21798d8f7d1dce0 100644 (file)
@@ -47,7 +47,6 @@
 #include <unistd.h>
 
 #define MAX_INBUF_SIZE 1024
-#define MAX_OUTBUF_SIZE (1024*1024*10)
 #define OUTBUF_FLUSH_THRESHOLD (1024*128)
 /* Max time to wait for connect() to finish before aborting */
 #define DIRECTOR_CONNECTION_CONNECT_TIMEOUT_MSECS (10*1000)
@@ -2045,7 +2044,7 @@ director_connection_init_common(struct director *dir, int fd)
        conn->fd = fd;
        conn->dir = dir;
        conn->input = i_stream_create_fd(conn->fd, MAX_INBUF_SIZE, FALSE);
-       conn->output = o_stream_create_fd(conn->fd, MAX_OUTBUF_SIZE, FALSE);
+       conn->output = o_stream_create_fd(conn->fd, dir->set->director_output_buffer_size, FALSE);
        o_stream_set_no_error_handling(conn->output, TRUE);
        array_append(&dir->connections, &conn, 1);
        return conn;
index b8f3ac025d8b55c562fcc0c1d20d5831ae9a9581..94bb9c884d88b2b9e6479a05c0c0b61e0f740e33 100644 (file)
@@ -76,6 +76,7 @@ static const struct setting_define director_setting_defines[] = {
        DEF(SET_TIME, director_user_kick_delay),
        DEF(SET_IN_PORT, director_doveadm_port),
        DEF(SET_BOOL, director_consistent_hashing),
+       DEF(SET_SIZE, director_output_buffer_size),
 
        SETTING_DEFINE_LIST_END
 };
@@ -89,7 +90,8 @@ const struct director_settings director_default_settings = {
        .director_flush_socket = "",
        .director_user_expire = 60*15,
        .director_user_kick_delay = 2,
-       .director_doveadm_port = 0
+       .director_doveadm_port = 0,
+       .director_output_buffer_size = 10 * 1024 * 1024,
 };
 
 const struct setting_parser_info director_setting_parser_info = {
index 17cbb79016e4aee4b17b3b0492c18fc9d53a2ab1..f579ef935a2202c45382f3cce74510cade5f462b 100644 (file)
@@ -15,6 +15,7 @@ struct director_settings {
        unsigned int director_user_kick_delay;
        in_port_t director_doveadm_port;
        bool director_consistent_hashing;
+       uoff_t director_output_buffer_size;
 };
 
 extern const struct setting_parser_info director_setting_parser_info;