diff --git a/src/include/switch_channel.h b/src/include/switch_channel.h index 0f9d0f9b4c..73eb7f1026 100644 --- a/src/include/switch_channel.h +++ b/src/include/switch_channel.h @@ -552,7 +552,7 @@ SWITCH_DECLARE(switch_status_t) switch_channel_dtmf_unlock(switch_channel_t *cha \param dtmf digit \return SWITCH_STATUS_SUCCESS if successful */ -SWITCH_DECLARE(switch_status_t) switch_channel_queue_dtmf(_In_ switch_channel_t *channel, _In_ switch_dtmf_t *dtmf); +SWITCH_DECLARE(switch_status_t) switch_channel_queue_dtmf(_In_ switch_channel_t *channel, _In_ const switch_dtmf_t *dtmf); SWITCH_DECLARE(switch_status_t) switch_channel_queue_dtmf_string(_In_ switch_channel_t *channel, _In_ const char *dtmf_string); /*! diff --git a/src/switch_channel.c b/src/switch_channel.c index 68aea4f409..aa31df0ad3 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -389,7 +389,7 @@ SWITCH_DECLARE(switch_size_t) switch_channel_has_dtmf(switch_channel_t *channel) return has; } -SWITCH_DECLARE(switch_status_t) switch_channel_queue_dtmf(switch_channel_t *channel, switch_dtmf_t *dtmf) +SWITCH_DECLARE(switch_status_t) switch_channel_queue_dtmf(switch_channel_t *channel, const switch_dtmf_t *dtmf) { switch_status_t status; void *pop; @@ -398,13 +398,13 @@ SWITCH_DECLARE(switch_status_t) switch_channel_queue_dtmf(switch_channel_t *chan switch_assert(dtmf); - if (sensitive) { - switch_set_flag(dtmf, DTMF_FLAG_SENSITIVE); - } - switch_mutex_lock(channel->dtmf_mutex); new_dtmf = *dtmf; + if (sensitive) { + switch_set_flag((&new_dtmf), DTMF_FLAG_SENSITIVE); + } + if ((status = switch_core_session_recv_dtmf(channel->session, dtmf) != SWITCH_STATUS_SUCCESS)) { goto done; }