diff options
Diffstat (limited to 'openbsc')
-rw-r--r-- | openbsc/include/openbsc/mgcp_internal.h | 2 | ||||
-rw-r--r-- | openbsc/src/libmgcp/mgcp_network.c | 2 | ||||
-rw-r--r-- | openbsc/src/libmgcp/mgcp_protocol.c | 4 |
3 files changed, 6 insertions, 2 deletions
diff --git a/openbsc/include/openbsc/mgcp_internal.h b/openbsc/include/openbsc/mgcp_internal.h index b16bd49a4..255161f45 100644 --- a/openbsc/include/openbsc/mgcp_internal.h +++ b/openbsc/include/openbsc/mgcp_internal.h @@ -85,7 +85,7 @@ struct mgcp_rtp_end { char *fmtp_extra; /* RTP patching */ - int force_constant_ssrc; + int force_constant_ssrc; /* -1: always, 0: don't, 1: once */ int force_constant_timing; /* diff --git a/openbsc/src/libmgcp/mgcp_network.c b/openbsc/src/libmgcp/mgcp_network.c index abb48f5fa..79c9e1aba 100644 --- a/openbsc/src/libmgcp/mgcp_network.c +++ b/openbsc/src/libmgcp/mgcp_network.c @@ -280,6 +280,8 @@ void mgcp_patch_and_count(struct mgcp_endpoint *endp, struct mgcp_rtp_state *sta timestamp; state->patch = 1; ssrc = state->orig_ssrc; + if (rtp_end->force_constant_ssrc != -1) + rtp_end->force_constant_ssrc -= 1; LOGP(DMGCP, LOGL_NOTICE, "SSRC patching enabled on 0x%x SSRC: %u " diff --git a/openbsc/src/libmgcp/mgcp_protocol.c b/openbsc/src/libmgcp/mgcp_protocol.c index c703bec13..b8e1ecde4 100644 --- a/openbsc/src/libmgcp/mgcp_protocol.c +++ b/openbsc/src/libmgcp/mgcp_protocol.c @@ -619,8 +619,10 @@ void mgcp_rtp_end_config(struct mgcp_endpoint *endp, int expect_ssrc_change, { struct mgcp_trunk_config *tcfg = endp->tcfg; + int patch_ssrc = expect_ssrc_change && tcfg->force_constant_ssrc; + rtp->force_constant_timing = tcfg->force_constant_timing; - rtp->force_constant_ssrc = tcfg->force_constant_ssrc; + rtp->force_constant_ssrc = patch_ssrc ? 1 : 0; LOGP(DMGCP, LOGL_DEBUG, "Configuring RTP endpoint: local port %d%s%s\n", |