From: Brian De Wolf Date: Thu, 12 Jan 2012 07:53:28 +0000 (+0100) Subject: Add support for query timeouts X-Git-Tag: release_3_0_0_beta0~406 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f360bf23b559d1c1c73685f081ef3c7f20007bc0;p=thirdparty%2Ffreeradius-server.git Add support for query timeouts Due to internal MySQL retries, the actual timeout is 3x the configured value. --- diff --git a/src/modules/rlm_sql/drivers/rlm_sql_mysql/sql_mysql.c b/src/modules/rlm_sql/drivers/rlm_sql_mysql/sql_mysql.c index 48d437a759b..af466f1e99a 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_mysql/sql_mysql.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_mysql/sql_mysql.c @@ -66,6 +66,7 @@ static int sql_init_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config) { rlm_sql_mysql_sock *mysql_sock; unsigned long sql_flags; + unsigned int timeout = config->query_timeout; if (!sqlsocket->conn) { sqlsocket->conn = (rlm_sql_mysql_sock *)rad_malloc(sizeof(rlm_sql_mysql_sock)); @@ -80,6 +81,15 @@ static int sql_init_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config) mysql_init(&(mysql_sock->conn)); mysql_options(&(mysql_sock->conn), MYSQL_READ_DEFAULT_GROUP, "freeradius"); + +#if (MYSQL_VERSION_ID >= 50000) + if(timeout) { + mysql_options(&(mysql_sock->conn), MYSQL_OPT_CONNECT_TIMEOUT, &timeout); + mysql_options(&(mysql_sock->conn), MYSQL_OPT_READ_TIMEOUT, &timeout); + mysql_options(&(mysql_sock->conn), MYSQL_OPT_WRITE_TIMEOUT, &timeout); + } +#endif + #if (MYSQL_VERSION_ID >= 40100) sql_flags = CLIENT_MULTI_RESULTS | CLIENT_FOUND_ROWS; #else