diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index b5be2e3da4c0c12f5b388b3bcb82207692b3b4ba..7913f33facf93ac3c13886578c414ec67ec36ba3 100644
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -6940,29 +6940,23 @@ retryowner:
 				iax2_destroy_nolock(fr.callno);
 				break;
 			case IAX_COMMAND_REJECT:
-				memset(&f, 0, sizeof(f));
-				f.frametype = AST_FRAME_CONTROL;
-				f.subclass = AST_CONTROL_CONGESTION;
-
 				/* Set hangup cause according to remote */
 				if (ies.causecode && iaxs[fr.callno]->owner)
 					iaxs[fr.callno]->owner->hangupcause = ies.causecode;
 
-				iax2_queue_frame(fr.callno, &f);
-				if (ast_test_flag(iaxs[fr.callno], IAX_PROVISION)) {
-					/* Send ack immediately, before we destroy */
-					send_command_immediate(iaxs[fr.callno], AST_FRAME_IAX, IAX_COMMAND_ACK, fr.ts, NULL, 0,fr.iseqno);
-					iax2_destroy_nolock(fr.callno);
-					break;
-				}
-				if (iaxs[fr.callno]->owner) {
-					if (authdebug)
-						ast_log(LOG_WARNING, "Call rejected by %s: %s\n", ast_inet_ntoa(iabuf, sizeof(iabuf), iaxs[fr.callno]->addr.sin_addr), ies.cause ? ies.cause : "<Unknown>");
+				if (!ast_test_flag(iaxs[fr.callno], IAX_PROVISION)) {
+					if (iaxs[fr.callno]->owner && authdebug)
+						ast_log(LOG_WARNING, "Call rejected by %s: %s\n",
+							ast_inet_ntoa(iabuf, sizeof(iabuf), iaxs[fr.callno]->addr.sin_addr),
+							ies.cause ? ies.cause : "<Unknown>");
+					ast_log(LOG_DEBUG, "Immediately destroying %d, having received reject\n",
+						fr.callno);
 				}
-				ast_log(LOG_DEBUG, "Immediately destroying %d, having received reject\n", fr.callno);
 				/* Send ack immediately, before we destroy */
-				send_command_immediate(iaxs[fr.callno], AST_FRAME_IAX, IAX_COMMAND_ACK, fr.ts, NULL, 0,fr.iseqno);
-				iaxs[fr.callno]->error = EPERM;
+				send_command_immediate(iaxs[fr.callno], AST_FRAME_IAX, IAX_COMMAND_ACK,
+						       fr.ts, NULL, 0, fr.iseqno);
+				if (!ast_test_flag(iaxs[fr.callno], IAX_PROVISION))
+					iaxs[fr.callno]->error = EPERM;
 				iax2_destroy_nolock(fr.callno);
 				break;
 			case IAX_COMMAND_TRANSFER: