diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index 6b63ed3816c58318942a66dbe762824b24b27958..9a2352080f7336628a1cd865924bcf6e0740d4a8 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -5985,7 +5985,7 @@ static int dahdi_send_callrerouting_facility_exec(struct ast_channel *chan, cons
 	/* Data will be our digit string */
 	struct dahdi_pvt *pvt;
 	char *parse;
-	int res = -1;
+	int res;
 	AST_DECLARE_APP_ARGS(args,
 		AST_APP_ARG(destination);
 		AST_APP_ARG(original);
@@ -6032,10 +6032,17 @@ static int dahdi_send_callrerouting_facility_exec(struct ast_channel *chan, cons
 		args.reason = NULL;
 	}
 
-	pri_send_callrerouting_facility_exec(pvt->sig_pvt, ast_channel_state(chan), args.destination,
-		args.original, args.reason);
+	res = pri_send_callrerouting_facility_exec(pvt->sig_pvt, ast_channel_state(chan),
+		args.destination, args.original, args.reason);
+	if (!res) {
+		/*
+		 * Wait up to 5 seconds for a reply before hanging up this call
+		 * leg if the peer does not disconnect first.
+		 */
+		ast_safe_sleep(chan, 5000);
+	}
 
-	return res;
+	return -1;
 }
 #endif	/* defined(HAVE_PRI_PROG_W_CAUSE) */
 #endif	/* defined(HAVE_PRI) */
diff --git a/channels/sig_pri.c b/channels/sig_pri.c
index 28bb6712f80a848a4c20475123a7f74e0ad59493..e94f08ef5790f8759d7ec3d5c44238b5cb30e87b 100644
--- a/channels/sig_pri.c
+++ b/channels/sig_pri.c
@@ -9048,7 +9048,7 @@ int pri_send_keypad_facility_exec(struct sig_pri_chan *p, const char *digits)
 
 int pri_send_callrerouting_facility_exec(struct sig_pri_chan *p, enum ast_channel_state chanstate, const char *destination, const char *original, const char *reason)
 {
-	int res = -1;
+	int res;
 
 	sig_pri_lock_private(p);