diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-04-18 02:14:45 +0800 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-04-18 02:40:32 +0800 |
commit | ff9e09b2bc3fafbd752907fe93a2ed066d8e35cf (patch) | |
tree | aad41164d6b2e854eae1abf99543fafec710ba2c | |
parent | ecf5cc294dac3596f260397f2340c9154915142e (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.c | 6 |
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; } |