From fd2a877e25d294ac186a6ad223da6abadc3b161f Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sat, 24 Apr 2010 21:05:18 +0800 Subject: nat: Release the transaction id earlier, always reset the BSC In case we can not find the SCCP connection we still want to free any pending transaction ids and reset the BSC inside the endpoint. In most cases this should be already done when the SCCP connection or the whole BSC is gone. --- openbsc/src/nat/bsc_mgcp_utils.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/openbsc/src/nat/bsc_mgcp_utils.c b/openbsc/src/nat/bsc_mgcp_utils.c index cb9264dfc..6e28095d0 100644 --- a/openbsc/src/nat/bsc_mgcp_utils.c +++ b/openbsc/src/nat/bsc_mgcp_utils.c @@ -196,6 +196,14 @@ int bsc_mgcp_policy_cb(struct mgcp_config *cfg, int endpoint, int state, const c bsc_endp = &nat->bsc_endpoints[endpoint]; mgcp_endp = &nat->mgcp_cfg->endpoints[endpoint]; + if (bsc_endp->transaction_id) { + LOGP(DMGCP, LOGL_ERROR, "Endpoint 0x%x had pending transaction: '%s'\n", + endpoint, bsc_endp->transaction_id); + talloc_free(bsc_endp->transaction_id); + bsc_endp->transaction_id = NULL; + } + bsc_endp->bsc = NULL; + sccp = bsc_mgcp_find_con(nat, endpoint); if (!sccp) { @@ -218,12 +226,6 @@ int bsc_mgcp_policy_cb(struct mgcp_config *cfg, int endpoint, int state, const c } } - if (bsc_endp->transaction_id) { - LOGP(DMGCP, LOGL_ERROR, "Endpoint 0x%x had pending transaction: '%s'\n", - endpoint, bsc_endp->transaction_id); - talloc_free(bsc_endp->transaction_id); - } - /* we need to generate a new and patched message */ bsc_msg = bsc_mgcp_rewrite((char *) nat->mgcp_msg, nat->mgcp_length, nat->mgcp_cfg->source_addr, mgcp_endp->rtp_port); -- cgit v1.2.3