From 0620b371893427f13bd32df341b81a6f2b06d970 Mon Sep 17 00:00:00 2001 From: Vadim Yanitskiy Date: Sat, 1 Dec 2018 22:06:37 +0700 Subject: osmo_bsc_bssap.c: fix incorrect link_id assignment Every DTAP message coming from the MSC has a header (see struct dtap_header) that contains message type, length, and link ID. The link ID indicates SAPI and channel type of a given message. In dtap_rcvmsg() we allocate a new message buffer and copy the received message into it. The old message buffer is freed by the caller then. The link ID value parsed from DTAP header is usually being stored in the control buffer of a message buffer (i.e. msgb->cb). Due to a mistake, it was stored in the old (to be freed) message, while the new (to be forwarded) message always had link_id = 0x00! This change resolves the problem with sending SMS during a voice call, when MT signalling goes through FACCH, while MO signalling goes through SACCH. Change-Id: I7675e1ce4436fad836778261ac9d446fa8f81483 Related: OS#3716 --- src/osmo-bsc/osmo_bsc_bssap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c index f03fb6ea3..39425f6e9 100644 --- a/src/osmo-bsc/osmo_bsc_bssap.c +++ b/src/osmo-bsc/osmo_bsc_bssap.c @@ -940,7 +940,7 @@ static int dtap_rcvmsg(struct gsm_subscriber_connection *conn, /* pass it to the filter for extra actions */ rc = bsc_scan_msc_msg(conn, gsm48); /* Store link_id in msgb->cb */ - OBSC_LINKID_CB(msg) = header->link_id; + OBSC_LINKID_CB(gsm48) = header->link_id; dtap_rc = osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_MT_DTAP, gsm48); if (rc == BSS_SEND_USSD) bsc_send_welcome_ussd(conn); -- cgit v1.2.3