提交 c47752c9 authored 作者: Anthony Minessale's avatar Anthony Minessale 提交者: Mike Jerris

FS-11438: [freeswitch-core] recvonly channels left that way on blind transfer in…

FS-11438: [freeswitch-core] recvonly channels left that way on blind transfer in some cases #resolve
上级 699affa1
...@@ -381,7 +381,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_print(switch_core_session_t ...@@ -381,7 +381,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_print(switch_core_session_t
SWITCH_DECLARE(switch_status_t) switch_core_session_printf(switch_core_session_t *session, const char *fmt, ...); SWITCH_DECLARE(switch_status_t) switch_core_session_printf(switch_core_session_t *session, const char *fmt, ...);
SWITCH_DECLARE(switch_msrp_session_t *) switch_core_media_get_msrp_session(switch_core_session_t *session); SWITCH_DECLARE(switch_msrp_session_t *) switch_core_media_get_msrp_session(switch_core_session_t *session);
SWITCH_DECLARE(void) switch_core_media_set_smode(switch_core_session_t *session, switch_media_type_t type, switch_media_flow_t smode, switch_sdp_type_t sdp_type);
SWITCH_END_EXTERN_C SWITCH_END_EXTERN_C
#endif #endif
......
...@@ -4662,7 +4662,7 @@ static void check_stream_changes(switch_core_session_t *session, switch_sdp_type ...@@ -4662,7 +4662,7 @@ static void check_stream_changes(switch_core_session_t *session, switch_sdp_type
} }
} }
static void switch_core_media_set_smode(switch_core_session_t *session, switch_media_type_t type, switch_media_flow_t smode, switch_sdp_type_t sdp_type) SWITCH_DECLARE(void) switch_core_media_set_smode(switch_core_session_t *session, switch_media_type_t type, switch_media_flow_t smode, switch_sdp_type_t sdp_type)
{ {
switch_media_handle_t *smh; switch_media_handle_t *smh;
switch_rtp_engine_t *engine; switch_rtp_engine_t *engine;
......
...@@ -2096,7 +2096,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_session_transfer(switch_core_session_ ...@@ -2096,7 +2096,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_session_transfer(switch_core_session_
const char *forwardvar = switch_channel_get_variable(channel, forwardvar_name); const char *forwardvar = switch_channel_get_variable(channel, forwardvar_name);
int forwardval = 70; int forwardval = 70;
const char *use_dialplan = dialplan, *use_context = context; const char *use_dialplan = dialplan, *use_context = context;
switch_media_flow_t flow;
if (zstr(forwardvar)) { if (zstr(forwardvar)) {
forwardvar_name = SWITCH_MAX_FORWARDS_VARIABLE; /* fall back to max_forwards variable for setting maximum */ forwardvar_name = SWITCH_MAX_FORWARDS_VARIABLE; /* fall back to max_forwards variable for setting maximum */
forwardvar = switch_channel_get_variable(channel, forwardvar_name); forwardvar = switch_channel_get_variable(channel, forwardvar_name);
...@@ -2109,6 +2110,16 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_session_transfer(switch_core_session_ ...@@ -2109,6 +2110,16 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_session_transfer(switch_core_session_
return SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
} }
if ((flow = switch_core_session_media_flow(session, SWITCH_MEDIA_TYPE_AUDIO)) != SWITCH_MEDIA_FLOW_SENDRECV) {
switch_core_session_message_t msg = { 0 };
msg.message_id = SWITCH_MESSAGE_INDICATE_MEDIA_RENEG;
msg.from = __FILE__;
switch_core_media_set_smode(session, SWITCH_MEDIA_TYPE_AUDIO, SWITCH_MEDIA_FLOW_SENDRECV, SDP_TYPE_REQUEST);
switch_core_session_receive_message(session, &msg);
}
max_forwards = switch_core_session_sprintf(session, "%d", forwardval); max_forwards = switch_core_session_sprintf(session, "%d", forwardval);
switch_channel_set_variable(channel, forwardvar_name, max_forwards); switch_channel_set_variable(channel, forwardvar_name, max_forwards);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论