diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 426704b515..8631f962b1 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -751,9 +751,14 @@ static void do_2833(switch_rtp_t *rtp_session) rtp_session->dtmf_data.out_digit_packet[2] = (unsigned char) (duration >> 8); rtp_session->dtmf_data.out_digit_packet[3] = (unsigned char) duration; + if (loops != 1) { + rtp_session->dtmf_data.out_digit_seq++; + } for (x = 0; x < loops; x++) { - rtp_session->dtmf_data.out_digit_seq++; + if (loops == 1) { + rtp_session->dtmf_data.out_digit_seq++; + } switch_rtp_write_manual(rtp_session, rtp_session->dtmf_data.out_digit_packet, 4, @@ -769,6 +774,8 @@ static void do_2833(switch_rtp_t *rtp_session) if (loops == 1) { rtp_session->last_write_seq = 0; + } else { + rtp_session->dtmf_data.out_digit_seq = 0; } } @@ -1409,7 +1416,7 @@ static int rtp_common_write(switch_rtp_t *rtp_session, void *data, uint32_t data } - if (rtp_session->last_write_seq >0 && rtp_session->last_write_seq <= rtp_session->dtmf_data.out_digit_seq) { + if (rtp_session->last_write_seq > 0 && rtp_session->last_write_seq <= rtp_session->dtmf_data.out_digit_seq) { send = 0; }