OsmoMSC must DLCX after a voice call is done
embarrassingly enough, we don't yet DLCX and the voice stream channels stay open indefinitely after each voice call (3G calls and soon AoIP).
Add DLCX to openbsc/libmgcp/mgcpgw_client.c and use in osmo-msc when a call disconnects.
- Status changed from New to In Progress
- % Done changed from 0 to 50
The mgcp_client now supports the generation of DLCX messages. In msc_ifaces.c (looks like all mgcp related switching stuff is implemented here) I have added the following function, which sends a DLCX to the endpoint that is associated with the given transaction:
void msc_call_release(struct gsm_trans *trans)
For 2G I call this function from gsm_04_08.c. For 3G a suitable place has still to be found, perhaps @neels knows best where to put it.
We also have another big problem: Assume the MSC has crashed and respawned. All ongoing calls will leave an open endpoint on the mgcp gateway. This endpoint will stay open for ever and it can not be re-used. My current hotfix is to send a DLCX to all endpoints at startup. This works fine, but is of course a little ugly. Another solution would be to send a DLCX before we want to seize a new endpoint. If there is still a lingering connection it would be closed then.
#8 Updated by dexter about 2 months ago
- Status changed from In Progress to Resolved
- % Done changed from 50 to 100
The DLCX message is now sent on the end of each call. I have added the missing "C" field today. Unfortunately I could not use trans->callref. For some reason this identifier gets lost. So I now use the endpoint id isself. This number is also unique, so it should fit the purpose.
See also patch on pmaier/aoip: 8761c965ff0b3d5f225a55411914313173758db9
I have created a new task for the problems we have with endpoints and restarts. This is the problem we currently solve with the DLCX befor CRCX method: See also: #2342