diff --git a/channels/chan_features.c b/channels/chan_features.c
index 5fa1b03a6379b7654450751c65ecc00e0f9cb241..3126688042c1029d993edeb96c6a04f09b65762a 100755
--- a/channels/chan_features.c
+++ b/channels/chan_features.c
@@ -142,7 +142,10 @@ static void swap_subs(struct feature_pvt *p, int a, int b)
 	}
 	if (p->subs[b].owner) {
 		for (x=0;x<AST_MAX_FDS;x++)
-			p->subs[b].owner->fds[x] = p->subchan->fds[x];
+			if (b)
+				p->subs[b].owner->fds[x] = -1;
+			else
+				p->subs[b].owner->fds[x] = p->subchan->fds[x];
 	}
 	wakeup_sub(p, a);
 	wakeup_sub(p, b);