aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authoroej <oej@f38db490-d61c-443f-a65b-d21fe96a405b>2006-11-20 11:36:45 +0000
committeroej <oej@f38db490-d61c-443f-a65b-d21fe96a405b>2006-11-20 11:36:45 +0000
commit8b48dbf7182a62466edcd45380e223db6c9b810e (patch)
treec9a6dcac7a1ed79e67c2e2cb1b6623436aeac460 /channels
parentf60aa2074ba55473e39bc998b09ce2782a9739f2 (diff)
Properly reset schedule items (rizzo)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@47844 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_sip.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index e245c7295..019ee581c 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -2095,6 +2095,7 @@ static void __sip_ack(struct sip_pvt *p, int seqno, int resp, int sipmethod)
if (sipdebug && option_debug > 3)
ast_log(LOG_DEBUG, "** SIP TIMER: Cancelling retransmit of packet (reply received) Retransid #%d\n", cur->retransid);
ast_sched_del(sched, cur->retransid);
+ cur->retransid = -1;
}
UNLINK(cur, p->packets, prev);
free(cur);
@@ -2139,8 +2140,8 @@ static int __sip_semi_ack(struct sip_pvt *p, int seqno, int resp, int sipmethod)
if (option_debug > 3 && sipdebug)
ast_log(LOG_DEBUG, "*** SIP TIMER: Cancelling retransmission #%d - %s (got response)\n", cur->retransid, sip_methods[sipmethod].text);
ast_sched_del(sched, cur->retransid);
+ cur->retransid = -1;
}
- cur->retransid = -1;
res = 0;
break;
}
@@ -2458,6 +2459,7 @@ static void sip_destroy_peer(struct sip_peer *peer)
}
if (peer->expire > -1)
ast_sched_del(sched, peer->expire);
+
if (peer->pokeexpire > -1)
ast_sched_del(sched, peer->pokeexpire);
register_peer_exten(peer, FALSE);
@@ -7818,8 +7820,10 @@ static enum parse_register_result parse_register_contact(struct sip_pvt *pvt, st
else
peer->username[0] = '\0';
- if (peer->expire > -1)
+ if (peer->expire > -1) {
ast_sched_del(sched, peer->expire);
+ peer->expire = -1;
+ }
if (expiry > max_expiry)
expiry = max_expiry;
if (expiry < min_expiry)
@@ -12003,6 +12007,7 @@ static int handle_response_register(struct sip_pvt *p, int resp, char *rest, str
if (global_regattempts_max)
p->registry->regattempts = global_regattempts_max+1;
ast_sched_del(sched, r->timeout);
+ r->timeout = -1;
ast_set_flag(&p->flags[0], SIP_NEEDDESTROY);
break;
case 404: /* Not found */
@@ -12012,6 +12017,7 @@ static int handle_response_register(struct sip_pvt *p, int resp, char *rest, str
ast_set_flag(&p->flags[0], SIP_NEEDDESTROY);
r->call = NULL;
ast_sched_del(sched, r->timeout);
+ r->timeout = -1;
break;
case 407: /* Proxy auth */
if (p->authtries == MAX_AUTHTRIES || do_register_auth(p, req, resp)) {
@@ -12045,6 +12051,7 @@ static int handle_response_register(struct sip_pvt *p, int resp, char *rest, str
ast_set_flag(&p->flags[0], SIP_NEEDDESTROY);
r->call = NULL;
ast_sched_del(sched, r->timeout);
+ r->timeout = -1;
break;
case 200: /* 200 OK */
if (!r) {