From: Brian De Wolf Date: Thu, 12 Jan 2012 07:53:28 +0000 (+0100) Subject: Add support for query timeouts X-Git-Tag: release_2_2_0~212 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f8d59f538ca31d1e052ab4df2536d36ceb8d9cc5;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 85e3e76042f..17f0262a81f 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)); @@ -81,6 +82,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