[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); switch_assert(channel != NULL);
if (index >= SWITCH_MAX_STATE_HANDLERS || index > channel->state_handler_index) { switch_mutex_lock(channel->state_mutex);
return NULL;
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); switch_mutex_unlock(channel->state_mutex);
return h; return h;