Feature #3508
Updated by neels over 5 years ago
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.)