From: Timo Sirainen Date: Wed, 25 Oct 2017 14:18:03 +0000 (+0300) Subject: director: Add director_output_buffer_size setting X-Git-Tag: 2.2.34~266 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f077ace7f178861b7a5955e2e82cca76b9cc06d1;p=thirdparty%2Fdovecot%2Fcore.git director: Add director_output_buffer_size setting 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. --- diff --git a/src/director/director-connection.c b/src/director/director-connection.c index 5ee4ae34f0..d5bd5335e4 100644 --- a/src/director/director-connection.c +++ b/src/director/director-connection.c @@ -47,7 +47,6 @@ #include #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; diff --git a/src/director/director-settings.c b/src/director/director-settings.c index b8f3ac025d..94bb9c884d 100644 --- a/src/director/director-settings.c +++ b/src/director/director-settings.c @@ -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 = { diff --git a/src/director/director-settings.h b/src/director/director-settings.h index 17cbb79016..f579ef935a 100644 --- a/src/director/director-settings.h +++ b/src/director/director-settings.h @@ -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;