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.
diff --git a/openbsc/src/nat/bsc_mgcp_utils.c b/openbsc/src/nat/bsc_mgcp_utils.c
index 30a5a30..ab830e6 100644
--- a/openbsc/src/nat/bsc_mgcp_utils.c
+++ b/openbsc/src/nat/bsc_mgcp_utils.c
@@ -94,6 +94,7 @@
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 @@
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;
}