diff --git a/configs/core.ini b/configs/core.ini index a1fc0f8d..f4ee0c2b 100755 --- a/configs/core.ini +++ b/configs/core.ini @@ -1,19 +1,22 @@ ; Configuration file for AMX Mod X -amxx_logs addons/amxmodx/logs -amxx_configsdir addons/amxmodx/configs -amxx_datadir addons/amxmodx/data -amxx_modules addons/amxmodx/configs/modules.ini -amxx_plugins addons/amxmodx/configs/plugins.ini -amxx_pluginsdir addons/amxmodx/plugins -amxx_modulesdir addons/amxmodx/modules -amxx_vault addons/amxmodx/data/vault.ini +amxx_logs addons/amxmodx/logs +amxx_configsdir addons/amxmodx/configs +amxx_datadir addons/amxmodx/data +amxx_modules addons/amxmodx/configs/modules.ini +amxx_plugins addons/amxmodx/configs/plugins.ini +amxx_pluginsdir addons/amxmodx/plugins +amxx_modulesdir addons/amxmodx/modules +amxx_vault addons/amxmodx/data/vault.ini ; Logging mode ; 0 - no logging ; 1 - one logfile / day ; 2 - one logfile / map ; 3 - HL Logs -amxx_logging 1 +amxx_logging 1 + +; MySQL default timeout +mysql_timeout 60 ; Binary logging level ; add these up to get what you want @@ -24,10 +27,10 @@ amxx_logging 1 ; 8 - log all native params ; 16 - log internal function calls (only in debug mode) ; 32 - log line number accesses (only in debug mode) -bin_logging 49 +bin_logging 49 ; Maximum binary log size, in megs -max_binlog_size 20 +max_binlog_size 20 ; Plugin optimization flags - add these up to get what you want ; lowering these may stop crashes on very old CPUs @@ -36,4 +39,4 @@ max_binlog_size 20 ; 1 - float arithmetic ; 2 - float comparisons ; 4 - float rounding -optimizer 7 +optimizer 7 diff --git a/configs/sql.cfg b/configs/sql.cfg index b8cd7657..11901c87 100755 --- a/configs/sql.cfg +++ b/configs/sql.cfg @@ -6,9 +6,10 @@ // *NOTE* amx_sql_type specifies the DEFAULT database type which admin.sma will use. -amx_sql_host "127.0.0.1" -amx_sql_user "root" -amx_sql_pass "" -amx_sql_db "amx" -amx_sql_table "admins" -amx_sql_type "mysql" +amx_sql_host "127.0.0.1" +amx_sql_user "root" +amx_sql_pass "" +amx_sql_db "amx" +amx_sql_table "admins" +amx_sql_type "mysql" +amx_sql_timeout "60" \ No newline at end of file diff --git a/dlls/mysqlx/mysql/MysqlDriver.cpp b/dlls/mysqlx/mysql/MysqlDriver.cpp index 89d5ed15..8afa7125 100644 --- a/dlls/mysqlx/mysql/MysqlDriver.cpp +++ b/dlls/mysqlx/mysql/MysqlDriver.cpp @@ -52,11 +52,22 @@ IDatabase *MysqlDriver::_Connect(DatabaseInfo *info, int *errcode, char *error, return NULL; } - if (do_timeout && info->max_timeout) + decltype(info->max_timeout) timeout = atoi(LOCALINFO("mysql_timeout")); + + if (timeout <= 0) { - mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&(info->max_timeout)); + timeout = 60; } + if (do_timeout && info->max_timeout > 0) + { + timeout = info->max_timeout; + } + + mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&timeout); + mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT, (const char *)&timeout); + mysql_options(mysql, MYSQL_OPT_WRITE_TIMEOUT, (const char *)&timeout); + /** Have MySQL automatically reconnect if it times out or loses connection. * This will prevent "MySQL server has gone away" errors after a while. */ diff --git a/plugins/admin.sma b/plugins/admin.sma index cb17beda..16e26230 100755 --- a/plugins/admin.sma +++ b/plugins/admin.sma @@ -73,6 +73,7 @@ public plugin_init() register_cvar("amx_sql_pass", "", FCVAR_PROTECTED) register_cvar("amx_sql_db", "amx", FCVAR_PROTECTED) register_cvar("amx_sql_type", "mysql", FCVAR_PROTECTED) + register_cvar("amx_sql_timeout", "60", FCVAR_PROTECTED) register_concmd("amx_reloadadmins", "cmdReload", ADMIN_CFG) register_concmd("amx_addadmin", "addadminfn", ADMIN_RCON, " [password] [authtype] - add specified player as an admin to users.ini") diff --git a/plugins/include/sqlx.inc b/plugins/include/sqlx.inc index 5641f9f4..6b92c3aa 100644 --- a/plugins/include/sqlx.inc +++ b/plugins/include/sqlx.inc @@ -393,6 +393,11 @@ stock Handle:SQL_MakeStdTuple(timeout = 0) get_cvar_string("amx_sql_pass", pass, 31); get_cvar_string("amx_sql_type", set_type, 11); get_cvar_string("amx_sql_db", db, 127); + + if (timeout <= 0) + { + timeout = get_cvar_num("amx_sql_timeout"); + } SQL_GetAffinity(get_type, 12);