Fix wrap around for rtp (bug #5595)
authorMark Spencer <markster@digium.com>
Fri, 11 Nov 2005 04:07:03 +0000 (04:07 +0000)
committerMark Spencer <markster@digium.com>
Fri, 11 Nov 2005 04:07:03 +0000 (04:07 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7069 65c4cc65-6c06-0410-ace0-fbb531ad65f3

rtp.c

diff --git a/rtp.c b/rtp.c
index 75979d8..653355e 100755 (executable)
--- a/rtp.c
+++ b/rtp.c
@@ -1098,6 +1098,8 @@ static unsigned int calc_txstamp(struct ast_rtp *rtp, struct timeval *delivery)
        /* Use previous txcore if available */
        t = (delivery && !ast_tvzero(*delivery)) ? *delivery : ast_tvnow();
        ms = ast_tvdiff_ms(t, rtp->txcore);
+       if (ms < 0)
+               ms = 0;
        /* Use what we just got for next time */
        rtp->txcore = t;
        return (unsigned int) ms;
@@ -1226,14 +1228,14 @@ static int ast_rtp_raw_write(struct ast_rtp *rtp, struct ast_frame *f, int codec
        char iabuf[INET_ADDRSTRLEN];
        int hdrlen = 12;
        int res;
-       int ms;
+       unsigned int ms;
        int pred;
        int mark = 0;
 
        ms = calc_txstamp(rtp, &f->delivery);
        /* Default prediction */
        if (f->subclass < AST_FORMAT_MAX_AUDIO) {
-                pred = rtp->lastts + f->samples;
+               pred = rtp->lastts + f->samples;
 
                /* Re-calculate last TS */
                rtp->lastts = rtp->lastts + ms * 8;