Review at  https://gerrit.osmocom.org/3658

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
---
M src/libmgcp/mgcp_protocol.c
1 file changed, 4 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/58/3658/1

diff --git a/src/libmgcp/mgcp_protocol.c b/src/libmgcp/mgcp_protocol.c
index 78e41f1..96542c5 100644
--- a/src/libmgcp/mgcp_protocol.c
+++ b/src/libmgcp/mgcp_protocol.c
@@ -277,10 +277,12 @@
        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);

-- 
To view, visit https://gerrit.osmocom.org/3658
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibcb59aa1ca25408f82cc88c2d5b81177b5f276dc
Gerrit-PatchSet: 1
Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr <nhofm...@sysmocom.de>
Gerrit-Reviewer: Pau Espin Pedrol <pes...@sysmocom.de>

Reply via email to