[Core] Fix race in switch_channel_get_state_handler()

This commit is contained in:
Andrey Volk 2024-07-31 22:21:33 +03:00
parent 7495917ac2
commit 045080e2c4

View File

@ -3072,12 +3072,12 @@ SWITCH_DECLARE(const switch_state_handler_table_t *) switch_channel_get_state_ha
switch_assert(channel != NULL);
if (index >= SWITCH_MAX_STATE_HANDLERS || index > channel->state_handler_index) {
return NULL;
switch_mutex_lock(channel->state_mutex);
if (index < SWITCH_MAX_STATE_HANDLERS && index <= channel->state_handler_index) {
h = channel->state_handlers[index];
}
switch_mutex_lock(channel->state_mutex);
h = channel->state_handlers[index];
switch_mutex_unlock(channel->state_mutex);
return h;