From f4715781dc60293f89027ddf5ae4cc41badb5979 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 18 Jul 2012 22:01:41 -0500 Subject: [PATCH] FS-4382 reverse this so you have to enable instead of disable, this patch has been causing srtp issues because the change in ssrc --- src/include/switch_types.h | 2 +- src/mod/endpoints/mod_sofia/sofia_glue.c | 8 ++++---- src/switch_rtp.c | 3 ++- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/include/switch_types.h b/src/include/switch_types.h index 86c7ab2f06..20ee478bf5 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -727,7 +727,7 @@ typedef enum { */ - RTP_BUG_NEVER_CHANGE_SSRC_ON_MARKER = (1 << 9) + RTP_BUG_CHANGE_SSRC_ON_MARKER = (1 << 9) /* By default FS will change the SSRC when the marker is set and it detects a timestamp reset. diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 78beb73624..878bf73a7f 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -7021,12 +7021,12 @@ void sofia_glue_parse_rtp_bugs(switch_rtp_bug_flag_t *flag_pole, const char *str *flag_pole &= ~RTP_BUG_GEN_ONE_GEN_ALL; } - if (switch_stristr("NEVER_CHANGE_SSRC_ON_MARKER", str)) { - *flag_pole |= RTP_BUG_NEVER_CHANGE_SSRC_ON_MARKER; + if (switch_stristr("CHANGE_SSRC_ON_MARKER", str)) { + *flag_pole |= RTP_BUG_CHANGE_SSRC_ON_MARKER; } - if (switch_stristr("~NEVER_CHANGE_SSRC_ON_MARKER", str)) { - *flag_pole &= ~RTP_BUG_NEVER_CHANGE_SSRC_ON_MARKER; + if (switch_stristr("~CHANGE_SSRC_ON_MARKER", str)) { + *flag_pole &= ~RTP_BUG_CHANGE_SSRC_ON_MARKER; } } diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 16b5d6d38c..f6bc364773 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -4130,7 +4130,8 @@ static int rtp_common_write(switch_rtp_t *rtp_session, send_msg->header.m = (m && !(rtp_session->rtp_bugs & RTP_BUG_NEVER_SEND_MARKER)) ? 1 : 0; /* If the marker was set, and the timestamp seems to have started over - set a new SSRC, to indicate this is a new stream */ - if (send_msg->header.m && !(rtp_session->rtp_bugs & RTP_BUG_NEVER_CHANGE_SSRC_ON_MARKER) && (rtp_session->last_write_ts == RTP_TS_RESET || + if (send_msg->header.m && switch_test_flag(rtp_session, SWITCH_RTP_FLAG_SECURE_SEND) && + (rtp_session->rtp_bugs & RTP_BUG_CHANGE_SSRC_ON_MARKER) && (rtp_session->last_write_ts == RTP_TS_RESET || (rtp_session->ts <= rtp_session->last_write_ts && rtp_session->last_write_ts > 0))) { switch_rtp_set_ssrc(rtp_session, (uint32_t) ((intptr_t) rtp_session + (uint32_t) switch_epoch_time_now(NULL))); }