diff options
author | Oliver Smith <osmith@sysmocom.de> | 2023-08-23 13:11:44 +0200 |
---|---|---|
committer | Oliver Smith <osmith@sysmocom.de> | 2023-08-23 17:15:58 +0200 |
commit | f3941518dcb6f9d76e3c45b7992cc91397cf6baf (patch) | |
tree | e9c4f91dc81e25ac55b07fe61b96a04f7ec43345 | |
parent | cfa37cb70b8722261247dca077d40cb2ecbe0c12 (diff) |
msc_a_up_call_assignment_complete: check CSD codec
Reject any other codec than GSM0808_SCT_CSD in Assignment Complete from
RAN, if OsmoMSC is preparing a CSD call.
Related: OS#4394
Change-Id: I94de84df41bcd050d0e7b4e4fea1c6a6551ef7d3
-rw-r--r-- | src/libmsc/msc_a.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/libmsc/msc_a.c b/src/libmsc/msc_a.c index 0d8a747e3..b4776a025 100644 --- a/src/libmsc/msc_a.c +++ b/src/libmsc/msc_a.c @@ -1483,6 +1483,15 @@ static void msc_a_up_call_assignment_complete(struct msc_a *msc_a, const struct return; } + /* Check for unexpected codec with CSD */ + if (cc_trans->bearer_cap.transfer == GSM48_BCAP_ITCAP_UNR_DIG_INF && + codec_if_known->type != GSM0808_SCT_CSD) { + LOG_TRANS(cc_trans, LOGL_ERROR, "Unexpected codec in Assignment Complete for CSD: %s\n", + gsm0808_speech_codec_type_name(codec_if_known->type)); + call_leg_release(msc_a->cc.call_leg); + return; + } + /* Update RAN-side endpoint CI from Assignment result -- unless it is forced by the ran_infra, in which * case it remains unchanged as passed to the earlier call of call_leg_ensure_ci(). */ if (msc_a->c.ran->force_mgw_codecs_to_ran.count == 0) |