dovecot-2.2: mysql: Added connect/read/write_timeout settings. D...

dovecot at dovecot.org dovecot at dovecot.org
Tue Oct 20 15:23:18 UTC 2015


details:   http://hg.dovecot.org/dovecot-2.2/rev/2730e603547d
changeset: 19321:2730e603547d
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Oct 20 17:07:20 2015 +0300
description:
mysql: Added connect/read/write_timeout settings. Default to 30s read/write_timeout.

diffstat:

 src/lib-sql/driver-mysql.c |  22 ++++++++++++++++++++--
 1 files changed, 20 insertions(+), 2 deletions(-)

diffs (67 lines):

diff -r e9f5db1e5770 -r 2730e603547d src/lib-sql/driver-mysql.c
--- a/src/lib-sql/driver-mysql.c	Tue Oct 20 16:57:34 2015 +0300
+++ b/src/lib-sql/driver-mysql.c	Tue Oct 20 17:07:20 2015 +0300
@@ -23,6 +23,9 @@
 #endif
 #include <errmsg.h>
 
+#define MYSQL_DEFAULT_READ_TIMEOUT_SECS 30
+#define MYSQL_DEFAULT_WRITE_TIMEOUT_SECS 30
+
 struct mysql_db {
 	struct sql_db api;
 
@@ -33,6 +36,7 @@
 	const char *option_file, *option_group;
 	in_port_t port;
 	unsigned int client_flags;
+	unsigned int connect_timeout, read_timeout, write_timeout;
 	time_t last_success;
 
 	MYSQL *mysql;
@@ -76,7 +80,7 @@
 	struct mysql_db *db = (struct mysql_db *)_db;
 	const char *unix_socket, *host;
 	unsigned long client_flags = db->client_flags;
-	unsigned int secs_used, connect_timeout = SQL_CONNECT_TIMEOUT_SECS;
+	unsigned int secs_used;
 	time_t start_time;
 	bool failed;
 
@@ -97,7 +101,9 @@
 			      db->option_file);
 	}
 
-	mysql_options(db->mysql, MYSQL_OPT_CONNECT_TIMEOUT, &connect_timeout);
+	mysql_options(db->mysql, MYSQL_OPT_CONNECT_TIMEOUT, &db->connect_timeout);
+	mysql_options(db->mysql, MYSQL_OPT_READ_TIMEOUT, &db->read_timeout);
+	mysql_options(db->mysql, MYSQL_OPT_WRITE_TIMEOUT, &db->write_timeout);
 	mysql_options(db->mysql, MYSQL_READ_DEFAULT_GROUP,
 		      db->option_group != NULL ? db->option_group : "client");
 
@@ -162,6 +168,9 @@
 
 	db->ssl_cipher = "HIGH";
 	db->ssl_verify_server_cert = 0; /* FIXME: change to 1 for v2.3 */
+	db->connect_timeout = SQL_CONNECT_TIMEOUT_SECS;
+	db->read_timeout = MYSQL_DEFAULT_READ_TIMEOUT_SECS;
+	db->write_timeout = MYSQL_DEFAULT_WRITE_TIMEOUT_SECS;
 
 	args = t_strsplit_spaces(connect_string, " ");
 	for (; *args != NULL; args++) {
@@ -189,6 +198,15 @@
 		} else if (strcmp(name, "client_flags") == 0) {
 			if (str_to_uint(value, &db->client_flags) < 0)
 				i_fatal("mysql: Invalid client flags: %s", value);
+		} else if (strcmp(name, "connect_timeout") == 0) {
+			if (str_to_uint(value, &db->connect_timeout) < 0)
+				i_fatal("mysql: Invalid read_timeout: %s", value);
+		} else if (strcmp(name, "read_timeout") == 0) {
+			if (str_to_uint(value, &db->read_timeout) < 0)
+				i_fatal("mysql: Invalid read_timeout: %s", value);
+		} else if (strcmp(name, "write_timeout") == 0) {
+			if (str_to_uint(value, &db->write_timeout) < 0)
+				i_fatal("mysql: Invalid read_timeout: %s", value);
 		} else if (strcmp(name, "ssl_cert") == 0)
 			field = &db->ssl_cert;
 		else if (strcmp(name, "ssl_key") == 0)


More information about the dovecot-cvs mailing list