diff options
author | zuul <zuul@gerrit.asterisk.org> | 2017-04-12 11:22:19 -0500 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2017-04-12 11:22:19 -0500 |
commit | 60fd01f7f4b43515f5d4d915eec701c6054c53cf (patch) | |
tree | 8434521a488690267d77f506cbf99be84e5611e0 | |
parent | 1d15e95440fdbdb3bc8affcd9e67a0917da1b6f5 (diff) | |
parent | 7819f95791fe0ca0e0cdc417e2687a5900444053 (diff) |
Merge "bridging: Ensure successful T.38 negotation"
-rw-r--r-- | bridges/bridge_simple.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/bridges/bridge_simple.c b/bridges/bridge_simple.c index 35544f84f..158c44353 100644 --- a/bridges/bridge_simple.c +++ b/bridges/bridge_simple.c @@ -56,6 +56,19 @@ static int simple_bridge_join(struct ast_bridge *bridge, struct ast_bridge_chann return 0; } + /* Request resend of T.38 negotiation if in progress and the other leg not yet T.38 + */ + if (ast_channel_get_t38_state(c0) == T38_STATE_NEGOTIATING && ast_channel_get_t38_state(c1) == T38_STATE_UNKNOWN) { + struct ast_control_t38_parameters parameters = { .request_response = AST_T38_REQUEST_PARMS, }; + ast_debug(3, "Sending T.38 param renegotiation to first channel %s.\n", ast_channel_name(c0)); + ast_indicate_data(c0, AST_CONTROL_T38_PARAMETERS, ¶meters, sizeof(parameters)); + } + if (ast_channel_get_t38_state(c1) == T38_STATE_NEGOTIATING && ast_channel_get_t38_state(c0) == T38_STATE_UNKNOWN) { + struct ast_control_t38_parameters parameters = { .request_response = AST_T38_REQUEST_PARMS, }; + ast_debug(3, "Sending T.38 param renegotiation to second channel %s.\n", ast_channel_name(c1)); + ast_indicate_data(c1, AST_CONTROL_T38_PARAMETERS, ¶meters, sizeof(parameters)); + } + return ast_channel_make_compatible(c0, c1); } |