Mercurial > dovecot > original-hg > dovecot-1.2
changeset 3420:d1b0dfa6572b HEAD
Make MySQL connect abort in 10 seconds if it can't connect.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Thu, 09 Jun 2005 21:31:43 +0300 |
parents | b97914e7c941 |
children | c624ffa9e6f0 |
files | src/lib-sql/driver-mysql.c |
diffstat | 1 files changed, 11 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-sql/driver-mysql.c Thu Jun 09 21:28:57 2005 +0300 +++ b/src/lib-sql/driver-mysql.c Thu Jun 09 21:31:43 2005 +0300 @@ -6,10 +6,14 @@ #ifdef HAVE_MYSQL #include <stdlib.h> +#include <unistd.h> #include <time.h> #include <mysql.h> #include <errmsg.h> +/* Abort connect() if it can't connect within this time. */ +#define MYSQL_CONNECT_FAILURE_TIMEOUT 10 + /* Minimum delay between reconnecting to same server */ #define CONNECT_MIN_DELAY 1 /* Maximum time to avoiding reconnecting to same server */ @@ -65,6 +69,7 @@ struct mysql_db *db = conn->db; const char *unix_socket, *host; time_t now; + int failed; if (conn->connected) return TRUE; @@ -98,9 +103,12 @@ #endif } - if (mysql_real_connect(conn->mysql, host, db->user, db->password, - db->dbname, db->port, unix_socket, - db->client_flags) == NULL) { + alarm(MYSQL_CONNECT_FAILURE_TIMEOUT); + failed = mysql_real_connect(conn->mysql, host, db->user, db->password, + db->dbname, db->port, unix_socket, + db->client_flags) == NULL; + alarm(0); + if (failed) { if (conn->connect_failure_count > 0) { /* increase delay between reconnections to this server */