diff options
author | Vadim Yanitskiy <axilirator@gmail.com> | 2018-12-01 22:06:37 +0700 |
---|---|---|
committer | Vadim Yanitskiy <axilirator@gmail.com> | 2018-12-01 22:06:40 +0700 |
commit | 0620b371893427f13bd32df341b81a6f2b06d970 (patch) | |
tree | 97017d8bf1a0630a0110d8b359b0eb1366f7aa9d /src/osmo-bsc/osmo_bsc_bssap.c | |
parent | 24482ad4e2797b4eb27f85ab8c836925c2ece5cd (diff) |
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
Diffstat (limited to 'src/osmo-bsc/osmo_bsc_bssap.c')
-rw-r--r-- | src/osmo-bsc/osmo_bsc_bssap.c | 2 |
1 files changed, 1 insertions, 1 deletions
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); |