aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2020-06-09 14:34:40 +0200
committerPhilipp Maier <pmaier@sysmocom.de>2020-06-18 16:55:02 +0200
commitc18efe4b4b1461b70dd84360f5e71d85c2d9707e (patch)
treef0f36a40194eff9faffb9fe47898a7705010b94e
parent33cd9e5e86f8031c51f83436f1b395442a581924 (diff)
msc_ho: fix CALL IDENTIFIER in HANDOVER REQUESTpmaier/callref
When msc_ho_send_handover_request() generates the HANDOVER REQUEST message, it does not populate the call_id struct member. In ran_msg_a.c the struct member call_id is used, but the call_id_present flag is not set, which also prevents the call_id being added to the message Change-Id: I6b1b55b3f5a3092d9557dc2512020c766a9ff744 Related: OS#4582
-rw-r--r--src/libmsc/msc_ho.c3
-rw-r--r--src/libmsc/ran_msg_a.c1
2 files changed, 4 insertions, 0 deletions
diff --git a/src/libmsc/msc_ho.c b/src/libmsc/msc_ho.c
index aa513eb58..d89a24c5e 100644
--- a/src/libmsc/msc_ho.c
+++ b/src/libmsc/msc_ho.c
@@ -383,6 +383,7 @@ static void msc_ho_send_handover_request(struct msc_a *msc_a)
struct vlr_subscr *vsub = msc_a_vsub(msc_a);
struct gsm_network *net = msc_a_net(msc_a);
struct gsm0808_channel_type channel_type;
+ struct gsm_trans *cc_trans = msc_a->cc.active_trans;
struct ran_msg ran_enc_msg = {
.msg_type = RAN_MSG_HANDOVER_REQUEST,
.handover_request = {
@@ -402,6 +403,8 @@ static void msc_ho_send_handover_request(struct msc_a *msc_a)
/* Don't send AoIP Transport Layer Address for inter-MSC Handover */
.rtp_ran_local = (msc_a->ho.new_cell.type == MSC_NEIGHBOR_TYPE_LOCAL_RAN_PEER)
? call_leg_local_ip(msc_a->cc.call_leg, RTP_TO_RAN) : NULL,
+ .call_id_present = true,
+ .call_id = cc_trans->callref,
},
};
diff --git a/src/libmsc/ran_msg_a.c b/src/libmsc/ran_msg_a.c
index a2aa93d82..145daa25f 100644
--- a/src/libmsc/ran_msg_a.c
+++ b/src/libmsc/ran_msg_a.c
@@ -1118,6 +1118,7 @@ struct msgb *ran_a_make_handover_request(struct osmo_fsm_inst *log_fi, const str
.imsi = n->imsi,
.codec_list_msc_preferred = n->codec_list_msc_preferred,
+ .call_id_present = n->call_id_present,
.call_id = n->call_id,
.global_call_reference = n->global_call_reference,
.global_call_reference_len = n->global_call_reference_len,