diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2017-08-11 18:32:22 +0200 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2017-08-14 11:07:02 +0200 |
commit | 06bd94b8f5601fddb4842e9a6a685b21f6a6d7e2 (patch) | |
tree | d25662e1b986095953145c9e8c8a0d9634b22b34 | |
parent | 948847c23802ac344b0be0813d55a496d6a73263 (diff) |
mgcp: Fix uplink activation of Osmux stream
Commit 575420637981828b64c1292ada015d7170b89390 introduced
OSMUX_STATE_NEGOTIATING to fix a race condition present in osmo-bsc_nat.
However, after this change osmo-bsc_mgcp cannot switch to
OSMUX_STATE_ACTIVATING anymore, which means during osmux_send_dummy time
it won't call osmux_enable_endpoint(), which in turn won't set endp type
to MGCP_OSMUX_BSC.
If MGCP_OSMUX_BSC is not set, uplink streams are sent using regular RTP
instead of Osmux not matter it is enabled in config or not.
Change-Id: Ibcb59aa1ca25408f82cc88c2d5b81177b5f276dc
-rw-r--r-- | openbsc/src/libmgcp/mgcp_protocol.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/openbsc/src/libmgcp/mgcp_protocol.c b/openbsc/src/libmgcp/mgcp_protocol.c index 4fcadd949..7cc62560d 100644 --- a/openbsc/src/libmgcp/mgcp_protocol.c +++ b/openbsc/src/libmgcp/mgcp_protocol.c @@ -277,10 +277,12 @@ static struct msgb *create_response_with_sdp(struct mgcp_endpoint *endp, if (!addr) addr = mgcp_net_src_addr(endp); - if (endp->osmux.state == OSMUX_STATE_NEGOTIATING) + if (endp->osmux.state == OSMUX_STATE_NEGOTIATING) { sprintf(osmux_extension, "\nX-Osmux: %u", endp->osmux.cid); - else + endp->osmux.state = OSMUX_STATE_ACTIVATING; + } else { osmux_extension[0] = '\0'; + } len = snprintf(sdp_record, sizeof(sdp_record), "I: %u%s\n\n", endp->ci, osmux_extension); |