From eba9f4e21846ca82a8d192a6aa06b2c95c156e65 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 26 Apr 2007 21:57:50 +0000 Subject: [PATCH] fix rfc2833 bs git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5021 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/switch_rtp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 105cf70ec3..05e5295025 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -967,6 +967,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ char key = switch_rfc2833_to_char(packet[0]); uint16_t in_digit_seq = ntohs((uint16_t) rtp_session->recv_msg.header.seq); + /* SHEESH.... Curse you RFC2833 inventors!!!! */ if ((time(NULL) - rtp_session->dtmf_data.last_digit_time) > 2) { rtp_session->dtmf_data.last_digit = 0; @@ -974,12 +975,12 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ } if (in_digit_seq > rtp_session->dtmf_data.in_digit_seq) { rtp_session->dtmf_data.in_digit_seq = in_digit_seq; - if (duration && end) { if (key != rtp_session->dtmf_data.last_digit) { char digit_str[] = { key, 0 }; time(&rtp_session->dtmf_data.last_digit_time); switch_rtp_queue_dtmf(rtp_session, digit_str); + switch_set_flag_locked(rtp_session, SWITCH_RTP_FLAG_BREAK); } if (++rtp_session->dtmf_data.dc >= 3) { rtp_session->dtmf_data.last_digit = 0;