mirror of
https://gitea.osmocom.org/cellular-infrastructure/osmo-mgw.git
synced 2025-10-23 08:12:01 +00:00
563ffc51b5b3cb209bf36b41f094be43cd37a5f2
This problem was noticed while running several LCLS test cases from ttcn3-bsc-test. Every test case makes osmo-bsc leak at least two chunks named 'struct mgcp_response_pending'. Here is the related osmo-bsc output with additional debug messages: DRLL ERROR mgcp_client_fsm.c:525 MGCP_CONN(to-MSC)[0x612000016120]{ST_READY}: MGW/DLCX: abrupt FSM termination with connections still present, sending unconditional DLCX... DLMGCP DEBUG mgcp_client.c:1010 mgcp_client_next_trans_id(id=35): new trans ID DLMGCP DEBUG mgcp_client.c:918 mgcp_client_pending_add(id=35): allocated and queued DLMGCP DEBUG mgcp_client.c:962 Queued 53 bytes for MGCP GW DLMGCP DEBUG mgcp_client.c:725 Tx MGCP: r=127.0.0.1:2427<->l=127.0.0.1:2727: len=53 'DLCX 35 rtpbridge/1@mgw MGCP 1.0\r\nC: 5\r\nI:'... DLMGCP ERROR mgcp_client.c:704 Failed to read: r=127.0.0.1:2427<->l=127.0.0.1:2727: 111='Connection refused' The MGCP client FSM enqueues a DLCX from its fsm_cleanup_cb(), and terminates. Thus if the remote MGCP peer becomes unavailable (e.g. due to a network failure), we would never get a response, and since the FSM is already terminated, nobody would pop and free() the response handler from the queue (mgcp->responses_pending). As a simple workaround, let's avoid allocating dummy entries of 'struct mgcp_response_pending' without a response handler. The only case where an MGCP message is sent without a handler is exactly during the FSM termination. Change-Id: I83938ff47fa8570b8d9dc810a184864a0c0b58aa Related: OS#4619
About OsmoMGW ============= OsmoMGW originated from the OpenBSC project, which started as a minimalistic all-in-one implementation of the GSM Network. In 2017, OpenBSC had reached maturity and diversity (including M3UA SIGTRAN and 3G support in the form of IuCS and IuPS interfaces) that naturally lead to a separation of the all-in-one approach to fully independent separate programs as in typical GSM networks. OsmoMGW was one of the parts split off from the old openbsc.git. It originated as a solution to merely navigate RTP streams through a NAT, but has since matured to a Media Gateway implementation that is capable of streaming RTP for 2G (AoIP) and 3G (IuCS) GSM networks as well as (still not implemented at time of writing) transcoding between TRAU, various RTP payloads and IuUP. The OsmoMGW program exposes an MGCP interface towards clients like OsmoMSC and OsmoBSC, and receives and sends RTP streams as configured via MGCP. The libosmo-mgcp-client library exposes utilities used by e.g. OsmoMSC (found in osmo-msc.git) to instruct OsmoMGW via its MGCP service. Find OsmoMGW issue tracker and wiki online at https://osmocom.org/projects/osmo-mgw https://osmocom.org/projects/osmo-mgw/wiki
Description
Languages
C
95.1%
Python
1.6%
Makefile
1.2%
M4
1%
Shell
1%