aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_iax2.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-05-25 13:57:57 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-05-25 13:57:57 +0000
commit3a3f86ee657c607c0d17436ba9f3d5a0db053da0 (patch)
treec506640c09f637b10a00c7d2d7efc0e0ecb20cc0 /channels/chan_iax2.c
parent414f4da97870617726e798d527ae3a8896c76f78 (diff)
Make sure transmitted timestamps are solid on trunks (bug #1713)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@3068 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_iax2.c')
-rwxr-xr-xchannels/chan_iax2.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 5905cd05e..2683bce2a 100755
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -2551,12 +2551,12 @@ static struct ast_channel *ast_iax2_new(struct chan_iax2_pvt *i, int state, int
static unsigned int calc_txpeerstamp(struct iax2_trunk_peer *tpeer, int sampms, struct timeval *tv)
{
- long int mssincetx;
+ unsigned long int mssincetx; /* unsigned to handle overflows */
long int ms, pred;
tpeer->trunkact = *tv;
mssincetx = (tv->tv_sec - tpeer->lasttxtime.tv_sec) * 1000 + (tv->tv_usec - tpeer->lasttxtime.tv_usec) / 1000;
- if (mssincetx > 5000) {
+ if (mssincetx > 5000 || (!tpeer->txtrunktime.tv_sec && !tpeer->txtrunktime.tv_usec)) {
/* If it's been at least 5 seconds since the last time we transmitted on this trunk, reset our timers */
tpeer->txtrunktime.tv_sec = tv->tv_sec;
tpeer->txtrunktime.tv_usec = tv->tv_usec;