diff --git a/channels/chan_sip.c b/channels/chan_sip.c index e626eb1458b0b4a066ee93c95650c842c5c91ed3..4985677dc3a9ba44eba9842ce66092fff7f8739b 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -1925,7 +1925,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); } } /* Remove the packet */