diff --git a/apps/app_dial.c b/apps/app_dial.c
index 4f53eeba8bf5078b6cbfe8479c34fb6d16ca9cfa..462b30eb1659b0a65447301e88deab3b76cf69e7 100644
--- a/apps/app_dial.c
+++ b/apps/app_dial.c
@@ -735,6 +735,7 @@ static void do_forward(struct chanlist *o,
 	if (!c) {
 		ast_clear_flag64(o, DIAL_STILLGOING);
 		handle_cause(cause, num);
+		ast_hangup(original);
 	} else {
 		char *new_cid_num, *new_cid_name;
 		struct ast_channel *src;
@@ -762,6 +763,7 @@ static void do_forward(struct chanlist *o,
 			ast_log(LOG_NOTICE, "Failed to dial on local channel for call forward to '%s'\n", tmpchan);
 			ast_clear_flag64(o, DIAL_STILLGOING);
 			ast_hangup(original);
+			ast_hangup(c);
 			c = o->chan = NULL;
 			num->nochan++;
 		} else {