Project

General

Profile

Feature #3508

compare Connection Identifier 'I:' case insensitively

Added by neels 9 months ago. Updated 8 months ago.

Status:
Resolved
Priority:
High
Assignee:
Category:
-
Target version:
-
Start date:
08/28/2018
Due date:
% Done:

100%


Description

When testing against a specific SCCPlite MSC, which sets up the MSC side of an MGW endpoint itself, I notice that it always returns Connection Identifiers in lower case.
When responding to a CRCX, osmo-mgw passes back a randomized connection ID in the "I: " header, to identify one connection of the given endpoint.
osmo-mgw always produces an upper-case hex digit stream, but this particular MSC always responds in lower-case hex digits when it sends a DLCX to clean up after an earlier CRCX.

For example, a CRCX is responded upon with 'I: 4E815C51'.
Later, the MSC sends a DLCX with 'I: 4e815c51'.
osmo-mgw then rejects the DLCX, saying that it cannot find a matching ID, simply due to the case mismatch.

At least for this particular MSC client, osmo-mgw should match the lower-case ID against its own upper-case ID.

MGCP being a string based protocol, one might expect the clients to store these IDs as strings, 1:1 returning whatever they received earlier.
The question is whether the hexadecimal nature is part of the MGCP specification -- if yes, we may always compare case-insensitively.
If not, we need to make osmo-mgw's case sensitivity configurable.

Also check whether the spec defines the hex characters to be lower or upper case, if at all.
(We could make osmo-mgw produce lower case hex IDs as a cheap alternative fix for this particular MSC.)


Related issues

Related to OsmoMGW - Feature #3429: idea: auto-cleanup endpoints after long period of inactivity?Resolved2018-07-28

Related to OsmoMGW - Feature #3509: match MGCP "I:" Connection ID also when leading zeros are omittedResolved2018-08-29

History

#1 Updated by neels 9 months ago

  • Description updated (diff)

#2 Updated by neels 9 months ago

  • Related to Feature #3429: idea: auto-cleanup endpoints after long period of inactivity? added

#3 Updated by neels 9 months ago

RFC3435

2.1.3.2 Names of Connections

   Connection identifiers are created by the gateway when it is
   requested to create a connection.  They identify the connection
   within the context of an endpoint.  Connection identifiers are
   treated in MGCP as hexadecimal strings.  The gateway MUST make sure
   that a proper waiting period, at least 3 minutes, elapses between the
   end of a connection that used this identifier and its use in a new
   connection for the same endpoint (gateways MAY decide to use
   identifiers that are unique within the context of the gateway).  The
   maximum length of a connection identifier is 32 characters.

"hexadecimal strings" == we should always compare case insensitively.

#4 Updated by neels 9 months ago

  • Status changed from New to In Progress

#5 Updated by neels 9 months ago

  • Related to Feature #3509: match MGCP "I:" Connection ID also when leading zeros are omitted added

#6 Updated by neels 9 months ago

  • % Done changed from 0 to 90

#7 Updated by laforge 9 months ago

some bogus update for testing purposes, please ignore

#8 Updated by neels 8 months ago

  • Status changed from In Progress to Resolved
  • % Done changed from 90 to 100

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)