From: Russell Bryant Date: Tue, 4 Jan 2005 17:18:15 +0000 (+0000) Subject: I got a crash in iax that I think is related to this timestamp patch, so I am going... X-Git-Tag: 1.0.11.1~298 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=74239cb26ce78064e5156521f2fdd544c9915457;p=thirdparty%2Fasterisk.git I got a crash in iax that I think is related to this timestamp patch, so I am going to back it out until we get it figured out. (bug #3119) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-0@4658 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index 17df823218..1817045a73 100755 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -3377,7 +3377,7 @@ static int vm_execmain(struct ast_channel *chan, void *data) goto out; } } - if (prefix) { + if (prefix && !ast_strlen_zero(prefixstr)) { char fullusername[80] = ""; strncpy(fullusername, prefixstr, sizeof(fullusername) - 1); strncat(fullusername, vms.username, sizeof(fullusername) - 1); diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 16c911d6a9..7a7eeffc81 100755 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -2815,18 +2815,6 @@ static unsigned int fix_peerts(struct timeval *tv, int callno, unsigned int ts) return ms + ts; } -static void add_ms(struct timeval *tv, int ms) { - tv->tv_usec += ms * 1000; - if(tv->tv_usec > 1000000) { - tv->tv_usec -= 1000000; - tv->tv_sec++; - } - if(tv->tv_usec < 0) { - tv->tv_usec += 1000000; - tv->tv_sec--; - } -} - static unsigned int calc_timestamp(struct chan_iax2_pvt *p, unsigned int ts, struct ast_frame *f) { struct timeval tv; @@ -2847,8 +2835,6 @@ static unsigned int calc_timestamp(struct chan_iax2_pvt *p, unsigned int ts, str delivery = &f->delivery; } else if (f->frametype == AST_FRAME_IAX) { genuine = 1; - } else if (f->frametype == AST_FRAME_CNG) { - p->notsilenttx = 0; } } if (!p->offset.tv_sec && !p->offset.tv_usec) { @@ -2873,33 +2859,15 @@ static unsigned int calc_timestamp(struct chan_iax2_pvt *p, unsigned int ts, str ms = 0; if (voice) { /* On a voice frame, use predicted values if appropriate */ - if (p->notsilenttx && abs(ms - p->nextpred) <= MAX_TIMESTAMP_SKEW) { - /* Adjust our txcore, keeping voice and - non-voice synchronized */ - add_ms(&p->offset, (int)(ms - p->nextpred)/10); - + if (abs(ms - p->nextpred) <= MAX_TIMESTAMP_SKEW) { if (!p->nextpred) { p->nextpred = ms; /*f->samples / 8;*/ if (p->nextpred <= p->lastsent) p->nextpred = p->lastsent + 3; } ms = p->nextpred; - } else { - /* in this case, just use the actual - * time, since we're either way off - * (shouldn't happen), or we're ending a - * silent period -- and seed the next - * predicted time. Also, round ms to the - * next multiple of frame size (so our - * silent periods are multiples of - * frame size too) */ - int diff = ms % (f->samples / 8); - if(diff) - ms += f->samples/8 - diff; - + } else p->nextpred = ms; - p->notsilenttx = 1; - } } else { /* On a dataframe, use last value + 3 (to accomodate jitter buffer shrinking) if appropriate unless it's a genuine frame */