diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index c743e0f42695c1c305df9182c7ed2eecf3e3e50f..cf2cd097c325e491eca86d9a093b88f703c6732e 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -25819,11 +25819,13 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, str
 
 				switch(result) {
 				case AST_PBX_FAILED:
+					sip_alreadygone(p);
 					ast_log(LOG_WARNING, "Failed to start PBX :(\n");
 					p->invitestate = INV_COMPLETED;
 					transmit_response_reliable(p, "503 Unavailable", req);
 					break;
 				case AST_PBX_CALL_LIMIT:
+					sip_alreadygone(p);
 					ast_log(LOG_WARNING, "Failed to start PBX (call limit reached) \n");
 					p->invitestate = INV_COMPLETED;
 					transmit_response_reliable(p, "480 Temporarily Unavailable", req);