mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-02-22 17:42:39 +00:00
[Core] sqldb: Fix wrong lock order in switch_cache_db_release_db_handle()
This commit is contained in:
parent
5169e58aca
commit
1607214fd0
@ -106,6 +106,7 @@ static void add_handle(switch_cache_db_handle_t *dbh, const char *db_str, const
|
|||||||
switch_ssize_t hlen = -1;
|
switch_ssize_t hlen = -1;
|
||||||
|
|
||||||
switch_mutex_lock(sql_manager.dbh_mutex);
|
switch_mutex_lock(sql_manager.dbh_mutex);
|
||||||
|
switch_mutex_lock(dbh->mutex);
|
||||||
|
|
||||||
switch_set_string(dbh->creator, db_callsite_str);
|
switch_set_string(dbh->creator, db_callsite_str);
|
||||||
|
|
||||||
@ -115,12 +116,11 @@ static void add_handle(switch_cache_db_handle_t *dbh, const char *db_str, const
|
|||||||
|
|
||||||
dbh->use_count++;
|
dbh->use_count++;
|
||||||
dbh->total_used_count++;
|
dbh->total_used_count++;
|
||||||
sql_manager.total_used_handles++;
|
|
||||||
dbh->next = sql_manager.handle_pool;
|
dbh->next = sql_manager.handle_pool;
|
||||||
|
|
||||||
sql_manager.handle_pool = dbh;
|
sql_manager.handle_pool = dbh;
|
||||||
sql_manager.total_handles++;
|
sql_manager.total_handles++;
|
||||||
switch_mutex_lock(dbh->mutex);
|
sql_manager.total_used_handles++;
|
||||||
switch_mutex_unlock(sql_manager.dbh_mutex);
|
switch_mutex_unlock(sql_manager.dbh_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -359,15 +359,16 @@ SWITCH_DECLARE(void) switch_cache_db_release_db_handle(switch_cache_db_handle_t
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch_mutex_lock(sql_manager.dbh_mutex);
|
|
||||||
(*dbh)->last_used = switch_epoch_time_now(NULL);
|
(*dbh)->last_used = switch_epoch_time_now(NULL);
|
||||||
|
|
||||||
if ((*dbh)->use_count) {
|
if ((*dbh)->use_count) {
|
||||||
--(*dbh)->use_count;
|
--(*dbh)->use_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch_mutex_unlock((*dbh)->mutex);
|
switch_mutex_unlock((*dbh)->mutex);
|
||||||
sql_manager.total_used_handles--;
|
|
||||||
*dbh = NULL;
|
*dbh = NULL;
|
||||||
|
|
||||||
|
switch_mutex_lock(sql_manager.dbh_mutex);
|
||||||
|
sql_manager.total_used_handles--;
|
||||||
switch_mutex_unlock(sql_manager.dbh_mutex);
|
switch_mutex_unlock(sql_manager.dbh_mutex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user