diff --git a/main/manager.c b/main/manager.c
index 8325fb0750..9eecda634f 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -96,6 +96,7 @@
 #include "asterisk/test.h"
 #include "asterisk/json.h"
 #include "asterisk/bridge.h"
+#include "asterisk/bridge_after.h"
 #include "asterisk/features_config.h"
 #include "asterisk/rtp_engine.h"
 #include "asterisk/format_cache.h"
@@ -3946,6 +3947,12 @@ static int action_sendtext(struct mansession *s, const struct message *m)
 	return 0;
 }
 
+static int async_goto_with_discard_bridge_after(struct ast_channel *chan, const char *context, const char *exten, int priority)
+{
+	ast_bridge_discard_after_goto(chan);
+	return ast_async_goto(chan, context, exten, priority);
+}
+
 /*! \brief  action_redirect: The redirect manager command */
 static int action_redirect(struct mansession *s, const struct message *m)
 {
@@ -4024,7 +4031,7 @@ static int action_redirect(struct mansession *s, const struct message *m)
 
 	if (ast_strlen_zero(name2)) {
 		/* Single channel redirect in progress. */
-		res = ast_async_goto(chan, context, exten, pi);
+		res = async_goto_with_discard_bridge_after(chan, context, exten, pi);
 		if (!res) {
 			astman_send_ack(s, m, "Redirect successful");
 		} else {
@@ -4063,12 +4070,12 @@ static int action_redirect(struct mansession *s, const struct message *m)
 	}
 	ast_channel_unlock(chan2);
 
-	res = ast_async_goto(chan, context, exten, pi);
+	res = async_goto_with_discard_bridge_after(chan, context, exten, pi);
 	if (!res) {
 		if (!ast_strlen_zero(context2)) {
-			res = ast_async_goto(chan2, context2, exten2, pi2);
+			res = async_goto_with_discard_bridge_after(chan2, context2, exten2, pi2);
 		} else {
-			res = ast_async_goto(chan2, context, exten, pi);
+			res = async_goto_with_discard_bridge_after(chan2, context, exten, pi);
 		}
 		if (!res) {
 			astman_send_ack(s, m, "Dual Redirect successful");