diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index e8890ebbe865776dd06f598272a2e3fc286bc1e3..f972a5c517f40eee8bb6f41d9a3425af5d6d8cac 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -12461,6 +12461,7 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_
 					}
 					/* Fall through */
 				case 503: /* Service Unavailable */
+				case 504: /* Server Timeout */
 					if (owner)
 						ast_queue_control(p->owner, AST_CONTROL_CONGESTION);
 					break;
@@ -12587,6 +12588,7 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_
 				case 603: /* Decline */
 				case 500: /* Server error */
 				case 503: /* Service Unavailable */
+				case 504: /* Server timeout */
 
 					if (sipmethod == SIP_INVITE) {	/* re-invite failed */
 						sip_cancel_destroy(p);