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:
parent
9db7843c06
commit
4c683d1215
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue