diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index cb02d31dee63e7ac4ae0ab25388c431410e35b23..068636e00cc1c89c5acbb78b2a563df7d77ae5e7 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -4101,6 +4101,11 @@ static int retrans_pkt(const void *data)
 				append_history(pkt->owner, "DialogKill", "Killing this failed dialog immediately");
 			}
 		}
+	} else if (pkt->owner->pendinginvite == pkt->seqno) {
+	       ast_log(LOG_WARNING, "Timeout on %s on non-critical invite transaction.\n", pkt->owner->callid);
+	       pkt->owner->invitestate = INV_TERMINATED;
+	       pkt->owner->pendinginvite = 0;
+	       check_pendings(pkt->owner);
 	}
 
 	if (pkt->method == SIP_BYE) {