diff --git a/src/switch_channel.c b/src/switch_channel.c index edf162c0fd..22f66bad25 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -1230,7 +1230,9 @@ SWITCH_DECLARE(void) switch_channel_set_flag_value(switch_channel_t *channel, sw switch_mutex_lock(channel->flag_mutex); if (flag == CF_LEG_HOLDING && !channel->flags[flag] && channel->flags[CF_ANSWERED]) { + switch_mutex_unlock(channel->flag_mutex); switch_channel_set_callstate(channel, CCS_HELD); + switch_mutex_lock(channel->flag_mutex); } channel->flags[flag] = value; switch_mutex_unlock(channel->flag_mutex);