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.
#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)
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;
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
};
.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 = {
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;