mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-17 15:29:05 +00:00
Merge "bridge_native_rtp: Handle case where channel joins already suspended."
This commit is contained in:
@@ -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 *bc0 = AST_LIST_FIRST(&bridge->channels);
|
||||||
struct ast_bridge_channel *bc1 = AST_LIST_LAST(&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;
|
struct ast_rtp_glue *glue0, *glue1;
|
||||||
RAII_VAR(struct ast_rtp_instance *, instance0, NULL, ao2_cleanup);
|
RAII_VAR(struct ast_rtp_instance *, instance0, NULL, ao2_cleanup);
|
||||||
RAII_VAR(struct ast_rtp_instance *, instance1, 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);
|
ast_channel_lock_both(bc0->chan, bc1->chan);
|
||||||
|
if (!bc0->suspended && !bc1->suspended) {
|
||||||
native_type = native_rtp_bridge_get(bc0->chan, bc1->chan, &glue0, &glue1, &instance0, &instance1, &vinstance0, &vinstance1);
|
native_type = native_rtp_bridge_get(bc0->chan, bc1->chan, &glue0, &glue1, &instance0, &instance1, &vinstance0, &vinstance1);
|
||||||
|
}
|
||||||
|
|
||||||
switch (native_type) {
|
switch (native_type) {
|
||||||
case AST_RTP_GLUE_RESULT_LOCAL:
|
case AST_RTP_GLUE_RESULT_LOCAL:
|
||||||
|
|||||||
@@ -110,6 +110,9 @@ struct ast_bridge_technology {
|
|||||||
*
|
*
|
||||||
* \note The bridge technology must tollerate a failed to join channel
|
* \note The bridge technology must tollerate a failed to join channel
|
||||||
* until it can be kicked from the bridge.
|
* 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);
|
int (*join)(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel);
|
||||||
/*!
|
/*!
|
||||||
|
|||||||
Reference in New Issue
Block a user