nat: Only close connections that were fully connected

Remember that we have seen a CC and have a valid destination
local reference now and only send a fake RLC to the MSC when
we had connections in this state.
This commit is contained in:
Holger Hans Peter Freyther 2010-04-23 14:13:27 +08:00
parent 9db7843c06
commit 4c683d1215
3 changed files with 4 additions and 1 deletions

View File

@ -110,6 +110,7 @@ struct sccp_connections {
struct sccp_source_reference real_ref;
struct sccp_source_reference patched_ref;
struct sccp_source_reference remote_ref;
int has_remote_ref;
/* GSM audio handling. That is 32 * multiplex + ts */
int crcx;

View File

@ -444,7 +444,8 @@ static void remove_bsc_connection(struct bsc_connection *connection)
if (sccp_patch->bsc != connection)
continue;
nat_send_rlsd(sccp_patch);
if (sccp_patch->has_remote_ref)
nat_send_rlsd(sccp_patch);
sccp_connection_destroy(sccp_patch);
}

View File

@ -141,6 +141,7 @@ int update_sccp_src_ref(struct sccp_connections *sccp, struct bsc_nat_parsed *pa
}
sccp->remote_ref = *parsed->src_local_ref;
sccp->has_remote_ref = 1;
LOGP(DNAT, LOGL_DEBUG, "Updating 0x%x to remote 0x%x on %p\n",
sccp_src_ref_to_int(&sccp->patched_ref),
sccp_src_ref_to_int(&sccp->remote_ref), sccp->bsc);