diff options
author | oej <oej@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-11-14 11:14:01 +0000 |
---|---|---|
committer | oej <oej@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-11-14 11:14:01 +0000 |
commit | ee9bdb740ac513306292a47145507706d0a647e5 (patch) | |
tree | c8300bfc940272fb0b53cfc29489458ecb6d5f64 /channels | |
parent | 462786b07d55014f1f0fd16cfa6a310183427a58 (diff) |
Issue #8272 - Don't destroy dialog in retransmission system if it's an OPTION packet from peerpoke
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@47597 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r-- | channels/chan_sip.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 2aa779367..12aa99754 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -1877,7 +1877,10 @@ static int retrans_pkt(void *data) ast_channel_unlock(pkt->owner->owner); } else { /* If no channel owner, destroy now */ - ast_set_flag(&pkt->owner->flags[0], SIP_NEEDDESTROY); + + /* Let the peerpoke system expire packets when the timer expires for poke_noanswer */ + if (pkt->method != SIP_OPTIONS) + ast_set_flag(&pkt->owner->flags[0], SIP_NEEDDESTROY); } } /* In any case, go ahead and remove the packet */ @@ -14840,7 +14843,7 @@ static int sip_poke_peer(struct sip_peer *peer) peer->call = NULL; return 0; } - if (peer->call > 0) { + if (peer->call) { if (sipdebug) ast_log(LOG_NOTICE, "Still have a QUALIFY dialog active, deleting\n"); sip_destroy(peer->call); |