]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res/res_rtp_asterisk: smoother can cause wrong timestamps if dtmf happen
authorTorrey Searle <torrey@voxbone.com>
Mon, 25 Feb 2019 15:41:44 +0000 (16:41 +0100)
committerTorrey Searle <tsearle@gmail.com>
Tue, 26 Feb 2019 14:13:38 +0000 (08:13 -0600)
Delivery timeval in the smoother object will fall behind while a DTMF is
being generated.  This can eventually lead to invalid rtp timestamps.
To prevent this from happening the smoother needs to be reset after every
DTMF to keep the timing up to date.

ASTERISK-28303 #close

Change-Id: Iaba3f7b428ebd72a4caa90e13b829ab4f088310f

res/res_rtp_asterisk.c

index c2064972e2876a345ae7e51976effaac76e953d9..84b2088455417c9ec433e69dbe069403369003fb 100644 (file)
@@ -3957,6 +3957,12 @@ static int ast_rtp_dtmf_end_with_duration(struct ast_rtp_instance *instance, cha
 
        /* Oh and we can't forget to turn off the stuff that says we are sending DTMF */
        rtp->lastts += calc_txstamp(rtp, NULL) * DTMF_SAMPLE_RATE_MS;
+
+       /* Reset the smoother as the delivery time stored in it is now out of date */
+       if (rtp->smoother) {
+               ast_smoother_free(rtp->smoother);
+               rtp->smoother = NULL;
+       }
 cleanup:
        rtp->sending_digit = 0;
        rtp->send_digit = 0;