This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Pau Espin Pedrol gerrit-no-reply at lists.osmocom.orgPau Espin Pedrol has uploaded this change for review. ( https://gerrit.osmocom.org/14022 Change subject: osmux: Allocate CID during CRCX ...................................................................... osmux: Allocate CID during CRCX Change-Id: Ie0e1835ff7e99421de9a5741a5eb57a11c004f7e --- M src/libosmo-mgcp/mgcp_msg.c M src/libosmo-mgcp/mgcp_protocol.c 2 files changed, 15 insertions(+), 6 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/22/14022/1 diff --git a/src/libosmo-mgcp/mgcp_msg.c b/src/libosmo-mgcp/mgcp_msg.c index 5dae5a2..a31bff4 100644 --- a/src/libosmo-mgcp/mgcp_msg.c +++ b/src/libosmo-mgcp/mgcp_msg.c @@ -354,21 +354,27 @@ /*! Extract OSMUX CID from an MGCP parameter line (string). * \param[in] line single parameter line from the MGCP message - * \returns OSMUX CID, -1 on error */ + * \returns OSMUX CID, -1 wildcard, -2 on error */ int mgcp_parse_osmux_cid(const char *line) { int osmux_cid; + + if (strstr(line + 2, "Osmux: *")) { + LOGP(DLMGCP, LOGL_DEBUG, "Parsed wilcard Osmux CID\n"); + return -1; + } + if (sscanf(line + 2, "Osmux: %u", &osmux_cid) != 1) { LOGP(DLMGCP, LOGL_ERROR, "Failed parsing Osmux in MGCP msg line: %s\n", line); - return -1; + return -2; } if (osmux_cid > OSMUX_CID_MAX) { LOGP(DLMGCP, LOGL_ERROR, "Osmux ID too large: %u > %u\n", osmux_cid, OSMUX_CID_MAX); - return -1; + return -2; } LOGP(DLMGCP, LOGL_DEBUG, "bsc-nat offered Osmux CID %u\n", osmux_cid); diff --git a/src/libosmo-mgcp/mgcp_protocol.c b/src/libosmo-mgcp/mgcp_protocol.c index 807e34a..0ec9c78 100644 --- a/src/libosmo-mgcp/mgcp_protocol.c +++ b/src/libosmo-mgcp/mgcp_protocol.c @@ -783,7 +783,7 @@ const char *callid = NULL; const char *mode = NULL; char *line; - int have_sdp = 0, osmux_cid = -1; + int have_sdp = 0, osmux_cid = -2; struct mgcp_conn_rtp *conn = NULL; struct mgcp_conn *_conn = NULL; char conn_name[512]; @@ -917,9 +917,12 @@ /* Annotate Osmux circuit ID and set it to negotiating state until this * is fully set up from the dummy load. */ conn->osmux.state = OSMUX_STATE_DISABLED; - if (osmux_cid >= 0) { - conn->osmux.cid = osmux_cid; + if (osmux_cid >= -1) { /* -1 is wilcard, alloc next avail CID */ conn->osmux.state = OSMUX_STATE_NEGOTIATING; + if (conn_osmux_allocate_cid(conn, osmux_cid) == -1) { + rate_ctr_inc(&rate_ctrs->ctr[MGCP_CRCX_FAIL_NO_OSMUX]); + goto error2; + } } else if (endp->cfg->osmux == OSMUX_USAGE_ONLY) { LOGPCONN(_conn, DLMGCP, LOGL_ERROR, "CRCX: osmux only and no osmux offered\n"); -- To view, visit https://gerrit.osmocom.org/14022 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: Ie0e1835ff7e99421de9a5741a5eb57a11c004f7e Gerrit-Change-Number: 14022 Gerrit-PatchSet: 1 Gerrit-Owner: Pau Espin Pedrol <pespin at sysmocom.de> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190513/304419bf/attachment.htm>