zrtp_secure_media=true will have to be set to true in order for your zrtp to work moving forward similar to how srtp_secure_media works.

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@13461 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Brian West 2009-05-27 05:07:19 +00:00
parent eee9aef9a3
commit ea4b78f749
2 changed files with 34 additions and 28 deletions

View File

@ -26,6 +26,9 @@
<X-PRE-PROCESS cmd="set" data="domain=$${local_ip_v4}"/>
<X-PRE-PROCESS cmd="set" data="domain_name=$${domain}"/>
<X-PRE-PROCESS cmd="set" data="hold_music=local_stream://moh"/>
<!-- Enable ZRTP globally you can override this on a per channel basis -->
<X-PRE-PROCESS cmd="set" data="zrtp_secure_media=true"/>
<!--
xmpp_client_profile and xmpp_server_profile
xmpp_client_profile can be any string.

View File

@ -1107,35 +1107,38 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_create(switch_rtp_t **new_rtp_session
int initiator = 0;
switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session");
switch_channel_t *channel = switch_core_session_get_channel(session);
const char *zrtp_enabled = switch_channel_get_variable(channel, "zrtp_secure_media");
if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
initiator = 1;
}
rtp_session->zrtp_profile = switch_core_alloc(rtp_session->pool, sizeof(*rtp_session->zrtp_profile));
zrtp_profile_defaults(rtp_session->zrtp_profile, zrtp_global);
rtp_session->zrtp_profile->allowclear = 0;
rtp_session->zrtp_profile->disclose_bit = 0;
rtp_session->zrtp_profile->cache_ttl = -1;
if (zrtp_status_ok != zrtp_session_init(zrtp_global, rtp_session->zrtp_profile, zid, initiator, &rtp_session->zrtp_session)) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error! zRTP INIT Failed\n");
zrtp_session_down(rtp_session->zrtp_session);
rtp_session->zrtp_session = NULL;
}
zrtp_session_set_userdata(rtp_session->zrtp_session, rtp_session);
if (zrtp_status_ok != zrtp_stream_attach(rtp_session->zrtp_session, &rtp_session->zrtp_ctx)) {
abort();
}
zrtp_stream_set_userdata(rtp_session->zrtp_ctx, rtp_session);
if (switch_true(switch_channel_get_variable(channel, "zrtp_enrollment"))) {
zrtp_stream_registration_start(rtp_session->zrtp_ctx, rtp_session->ssrc);
} else {
zrtp_stream_start(rtp_session->zrtp_ctx, rtp_session->ssrc);
if (switch_true(zrtp_enabled)) {
if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
initiator = 1;
}
rtp_session->zrtp_profile = switch_core_alloc(rtp_session->pool, sizeof(*rtp_session->zrtp_profile));
zrtp_profile_defaults(rtp_session->zrtp_profile, zrtp_global);
rtp_session->zrtp_profile->allowclear = 0;
rtp_session->zrtp_profile->disclose_bit = 0;
rtp_session->zrtp_profile->cache_ttl = -1;
if (zrtp_status_ok != zrtp_session_init(zrtp_global, rtp_session->zrtp_profile, zid, initiator, &rtp_session->zrtp_session)) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error! zRTP INIT Failed\n");
zrtp_session_down(rtp_session->zrtp_session);
rtp_session->zrtp_session = NULL;
}
zrtp_session_set_userdata(rtp_session->zrtp_session, rtp_session);
if (zrtp_status_ok != zrtp_stream_attach(rtp_session->zrtp_session, &rtp_session->zrtp_ctx)) {
abort();
}
zrtp_stream_set_userdata(rtp_session->zrtp_ctx, rtp_session);
if (switch_true(switch_channel_get_variable(channel, "zrtp_enrollment"))) {
zrtp_stream_registration_start(rtp_session->zrtp_ctx, rtp_session->ssrc);
} else {
zrtp_stream_start(rtp_session->zrtp_ctx, rtp_session->ssrc);
}
}
}
#endif