diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index feb3abf630fb21cb74e1a8a9fc6d6029d0bf2a26..38af7956f9ed3ed2390d9637cd305ac0deaafc52 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -5043,6 +5043,8 @@ static int handle_request(struct sip_pvt *p, struct sip_request *req, struct soc
 			}
 		} else if (p->owner)
 			ast_queue_hangup(p->owner, 0);
+		else
+			p->needdestroy = 1;
 		transmit_response(p, "200 OK", req);
 	} else if (!strcasecmp(cmd, "MESSAGE")) {
 		if (sipdebug)