Merged revisions 51170 via svnmerge from
authorJason Parker <jparker@digium.com>
Wed, 17 Jan 2007 00:22:20 +0000 (00:22 +0000)
committerJason Parker <jparker@digium.com>
Wed, 17 Jan 2007 00:22:20 +0000 (00:22 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r51170 | qwell | 2007-01-16 18:20:56 -0600 (Tue, 16 Jan 2007) | 4 lines

Fix issue with dtmf continuation packets when the dtmf digit is 0...

Issue 8831

........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@51171 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/rtp.c

index e80cb3e..90890d3 100644 (file)
@@ -143,7 +143,8 @@ struct ast_rtp {
        unsigned int dtmfduration;
        /* DTMF Transmission Variables */
        unsigned int lastdigitts;
-       char send_digit;
+       char sending_digit;     /* boolean - are we sending digits */
+       char send_digit;        /* digit we are sending */
        int send_payload;
        int send_duration;
        int nat;
@@ -1142,7 +1143,7 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp)
        struct ast_rtp *bridged = NULL;
        
        /* If time is up, kill it */
-       if (rtp->send_digit)
+       if (rtp->sending_digit)
                ast_rtp_senddigit_continuation(rtp);
 
        len = sizeof(sin);
@@ -2203,6 +2204,7 @@ int ast_rtp_senddigit_begin(struct ast_rtp *rtp, char digit)
        }
 
        /* Since we received a begin, we can safely store the digit and disable any compensation */
+       rtp->sending_digit = 1;
        rtp->send_digit = digit;
        rtp->send_payload = payload;
 
@@ -2294,6 +2296,7 @@ int ast_rtp_senddigit_end(struct ast_rtp *rtp, char digit)
                                    ast_inet_ntoa(rtp->them.sin_addr),
                                    ntohs(rtp->them.sin_port), rtp->send_payload, rtp->seqno, rtp->lastdigitts, res - hdrlen);
        }
+       rtp->sending_digit = 0;
        rtp->send_digit = 0;
        /* Increment lastdigitts */
        rtp->lastdigitts += 960;