diff -Naur asterisk-addonsCVS/res_config_mysql.c asterisk-addons/res_config_mysql.c --- asterisk-addonsCVS/res_config_mysql.c 2005-01-05 11:17:00.000000000 +0100 +++ asterisk-addons/res_config_mysql.c 2005-01-05 11:22:09.000000000 +0100 @@ -602,21 +602,25 @@ static int mysql_reconnect() { + ast_mutex_lock(&mysql_lock); if((!connected) && (dbhost || dbsock) && dbuser && dbpass && dbname) { if(!mysql_init(&mysql)) { ast_log(LOG_WARNING, "MySQL RealTime: Insufficient memory to allocate MySQL resource.\n"); connected = 0; + ast_mutex_unlock(&mysql_lock); return 0; } if(mysql_real_connect(&mysql, dbhost, dbuser, dbpass, dbname, dbport, dbsock, 0)) { ast_log(LOG_DEBUG, "MySQL RealTime: Successfully connected to database.\n"); connected = 1; connect_time = time(NULL); + ast_mutex_unlock(&mysql_lock); return 1; } else { ast_log(LOG_ERROR, "MySQL RealTime: Failed to connect database server %s on %s. Check debug for more info.\n", dbname, dbhost); ast_log(LOG_DEBUG, "MySQL RealTime: Cannot Connect: %s\n", mysql_error(&mysql)); connected = 0; + ast_mutex_unlock(&mysql_lock); return 0; } } else { @@ -627,10 +631,12 @@ connected = 0; ast_log(LOG_ERROR, "MySQL RealTime: Attempted to reconnect. Failed. Check debug for more info.\n"); ast_log(LOG_DEBUG, "MySQL RealTime: Server Error: %s\n", mysql_error(&mysql)); + ast_mutex_unlock(&mysql_lock); return 0; } ast_log(LOG_DEBUG, "MySQL RealTime: Everything is fine.\n"); connected = 1; + ast_mutex_unlock(&mysql_lock); return 1; } }