aboutsummaryrefslogtreecommitdiffstats
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
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.
-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;
}