diff options
Diffstat (limited to 'openbsc/src')
-rw-r--r-- | openbsc/src/osmo-bsc_nat/bsc_nat.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat.c b/openbsc/src/osmo-bsc_nat/bsc_nat.c index 4a6e36d91..295074593 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat.c @@ -608,6 +608,11 @@ static int forward_sccp_to_bts(struct bsc_msc_connection *msc_con, struct msgb * goto send_to_all; break; case SCCP_MSG_TYPE_RLSD: + if (con && con->con_local == NAT_CON_END_USSD) { + LOGP(DNAT, LOGL_NOTICE, "RLSD for a USSD connection. Ignoring.\n"); + con = NULL; + } + /* fall through */ case SCCP_MSG_TYPE_CREF: case SCCP_MSG_TYPE_DT1: case SCCP_MSG_TYPE_IT: @@ -623,6 +628,10 @@ static int forward_sccp_to_bts(struct bsc_msc_connection *msc_con, struct msgb * LOGP(DNAT, LOGL_ERROR, "Failed to assign...\n"); } else LOGP(DNAT, LOGL_ERROR, "Assignment command but no BSC.\n"); + } else if (con && con->con_local == NAT_CON_END_USSD && + parsed->gsm_type == BSS_MAP_MSG_CLEAR_CMD) { + LOGP(DNAT, LOGL_NOTICE, "Clear Command for USSD Connection. Ignoring.\n"); + con = NULL; } break; case SCCP_MSG_TYPE_CC: |