diff --git a/bridges/bridge_native_rtp.c b/bridges/bridge_native_rtp.c
index e011f50374cb29173f9c950aad0515692a7f3d6b..77e321f4f0f1c9ab2c034c6f7af59238b8e9a1bc 100644
--- a/bridges/bridge_native_rtp.c
+++ b/bridges/bridge_native_rtp.c
@@ -129,7 +129,7 @@ static void native_rtp_bridge_start(struct ast_bridge *bridge, struct ast_channe
 {
 	struct ast_bridge_channel *bc0 = AST_LIST_FIRST(&bridge->channels);
 	struct ast_bridge_channel *bc1 = AST_LIST_LAST(&bridge->channels);
-	enum ast_rtp_glue_result native_type;
+	enum ast_rtp_glue_result native_type = AST_RTP_GLUE_RESULT_FORBID;
 	struct ast_rtp_glue *glue0, *glue1;
 	RAII_VAR(struct ast_rtp_instance *, instance0, NULL, ao2_cleanup);
 	RAII_VAR(struct ast_rtp_instance *, instance1, NULL, ao2_cleanup);
@@ -145,7 +145,9 @@ static void native_rtp_bridge_start(struct ast_bridge *bridge, struct ast_channe
 	}
 
 	ast_channel_lock_both(bc0->chan, bc1->chan);
-	native_type = native_rtp_bridge_get(bc0->chan, bc1->chan, &glue0, &glue1, &instance0, &instance1, &vinstance0, &vinstance1);
+	if (!bc0->suspended && !bc1->suspended) {
+		native_type = native_rtp_bridge_get(bc0->chan, bc1->chan, &glue0, &glue1, &instance0, &instance1, &vinstance0, &vinstance1);
+	}
 
 	switch (native_type) {
 	case AST_RTP_GLUE_RESULT_LOCAL:
diff --git a/include/asterisk/bridge_technology.h b/include/asterisk/bridge_technology.h
index 8df19d9e97eebf354c9de3aad28bbf411a5e806d..843d93ccfc614dde01e34590ab6363a12d8ed444 100644
--- a/include/asterisk/bridge_technology.h
+++ b/include/asterisk/bridge_technology.h
@@ -110,6 +110,9 @@ struct ast_bridge_technology {
 	 *
 	 * \note The bridge technology must tollerate a failed to join channel
 	 * until it can be kicked from the bridge.
+	 *
+	 * \note A channel may be in a suspended state already when joining a bridge
+	 * technology. The technology must handle this case.
 	 */
 	int (*join)(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel);
 	/*!