diff --git a/channels/chan_gulp.c b/channels/chan_gulp.c
index 144fb6aaa9d811b5680198d2cdf037d7cd2c3273..b4a53685c57e550b3f02903f8015c1bf0d4ba887 100644
--- a/channels/chan_gulp.c
+++ b/channels/chan_gulp.c
@@ -488,12 +488,14 @@ static int gulp_set_rtp_peer(struct ast_channel *chan,
 	struct gulp_pvt *pvt = ast_channel_tech_pvt(chan);
 	struct ast_sip_session *session = pvt->session;
 	int changed = 0;
+	struct ast_channel *bridge_peer;
 
-	/* BUGBUG - ast_bridged_channel will always return NULL, meaning direct media will never occur */
 	/* Don't try to do any direct media shenanigans on early bridges */
-	if ((rtp || vrtp || tpeer) && !ast_bridged_channel(chan)) {
+	bridge_peer = ast_channel_bridge_peer(chan);
+	if ((rtp || vrtp || tpeer) && !bridge_peer) {
 		return 0;
 	}
+	ast_channel_cleanup(bridge_peer);
 
 	if (nat_active && session->endpoint->disable_direct_media_on_nat) {
 		return 0;