Index: channels/chan_sip.c =================================================================== --- channels/chan_sip.c (revision 106010) +++ channels/chan_sip.c (working copy) @@ -2824,6 +2824,7 @@ pkt->next = p->packets; p->packets = pkt; /* Add it to the queue */ pkt->timer_t1 = p->timer_t1; /* Set SIP timer T1 */ + pkt->retransid = -1; /* Only add sched for new pkt */ if (pkt->timer_t1) siptimer_a = pkt->timer_t1 * 2; Index: include/asterisk/sched.h =================================================================== --- include/asterisk/sched.h (revision 106010) +++ include/asterisk/sched.h (working copy) @@ -38,7 +38,7 @@ #define AST_SCHED_DEL(sched, id) \ do { \ int _count = 0; \ - while (id > -1 && ast_sched_del(sched, id) && _count++ < 10) \ + while (id > -1 && ast_sched_del(sched, id) == 0 && _count++ <= 10) \ usleep(1); \ if (_count == 10) \ ast_log(LOG_WARNING, "Unable to cancel schedule ID %d. This is probably a bug (%s: %s, line %d).\n", id, __FILE__, __PRETTY_FUNCTION__, __LINE__); \ @@ -48,7 +48,7 @@ #define AST_SCHED_REPLACE_VARIABLE(id, sched, when, callback, data, variable) \ do { \ int _count = 0; \ - while (id > -1 && ast_sched_del(sched, id) && _count++ < 10) \ + while (id > -1 && ast_sched_del(sched, id) == 0 && _count++ <= 10) \ usleep(1); \ if (_count == 10) \ ast_log(LOG_WARNING, "Unable to cancel schedule ID %d. This is probably a bug (%s: %s, line %d).\n", id, __FILE__, __PRETTY_FUNCTION__, __LINE__); \