diff --git a/main/features.c b/main/features.c
index 6ad1c12a9b6089ed061c7912eac5bca7f293fc75..a7be7a648b18587d597723c072200e1639c82eeb 100644
--- a/main/features.c
+++ b/main/features.c
@@ -2326,6 +2326,10 @@ static void add_features_datastores(struct ast_channel *caller, struct ast_chann
 		ast_channel_lock(caller);
 		ast_channel_datastore_add(caller, ds_caller_features);
 		ast_channel_unlock(caller);
+	} else {
+		/* If we don't return here, then when we do a builtin_atxfer we will copy the disconnect
+		 * flags over from the atxfer to the caller */
+		return;
 	}
 
 	ast_channel_lock(callee);