changeset 22623:f733d647ff82

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.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Wed, 25 Oct 2017 17:18:03 +0300
parents c0417a608a71
children f7e2f55e6e91
files src/director/director-connection.c src/director/director-settings.c src/director/director-settings.h
diffstat 3 files changed, 5 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/director/director-connection.c	Mon Oct 16 13:53:58 2017 +0300
+++ b/src/director/director-connection.c	Wed Oct 25 17:18:03 2017 +0300
@@ -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 @@
 	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;
--- a/src/director/director-settings.c	Mon Oct 16 13:53:58 2017 +0300
+++ b/src/director/director-settings.c	Wed Oct 25 17:18:03 2017 +0300
@@ -76,6 +76,7 @@
 	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 @@
 	.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 = {
--- a/src/director/director-settings.h	Mon Oct 16 13:53:58 2017 +0300
+++ b/src/director/director-settings.h	Wed Oct 25 17:18:03 2017 +0300
@@ -15,6 +15,7 @@
 	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;