aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-04-18 02:14:45 +0800
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-04-18 02:40:32 +0800
commitff9e09b2bc3fafbd752907fe93a2ed066d8e35cf (patch)
treeaad41164d6b2e854eae1abf99543fafec710ba2c /openbsc
parentecf5cc294dac3596f260397f2340c9154915142e (diff)
nat: Return the newest SCCP connection...
In case we have a stale SCCP connection with an Endpoint that we want to reassign...use the newest (last) occurence of that as it is most likely the one we want to handle.
Diffstat (limited to 'openbsc')
-rw-r--r--openbsc/src/nat/bsc_mgcp_utils.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/openbsc/src/nat/bsc_mgcp_utils.c b/openbsc/src/nat/bsc_mgcp_utils.c
index 30a5a30f7..ab830e6e5 100644
--- a/openbsc/src/nat/bsc_mgcp_utils.c
+++ b/openbsc/src/nat/bsc_mgcp_utils.c
@@ -94,6 +94,7 @@ void bsc_mgcp_free_endpoints(struct bsc_nat *nat)
struct bsc_connection *bsc_mgcp_find_con(struct bsc_nat *nat, int endpoint)
{
+ struct bsc_connection *bsc = NULL;
struct sccp_connections *sccp;
llist_for_each_entry(sccp, &nat->sccp_connections, list_entry) {
@@ -102,9 +103,12 @@ struct bsc_connection *bsc_mgcp_find_con(struct bsc_nat *nat, int endpoint)
if (mgcp_timeslot_to_endpoint(0, sccp->msc_timeslot) != endpoint)
continue;
- return sccp->bsc;
+ bsc = sccp->bsc;
}
+ if (bsc)
+ return bsc;
+
LOGP(DMGCP, LOGL_ERROR, "Failed to find the connection.\n");
return NULL;
}