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 */