falconia has uploaded this change for review.
msc_a: send MNCC_RTP_CONNECT in call waiting scenarios
In normal operation, when a call is established, TCH is assigned
where none existed previously, and when this assignment succeeds,
gsm48_tch_rtp_create() is called to communicate RTP stream info
to the external call agent via MNCC_RTP_CREATE message. However,
in a call waiting scenario, TCH already exists from call 1 and
there is no new channel assignment to be made for call 2 - instead
the same TCH is expected to be reused as the user switches between
calls.
The problem, however, is that because no new channel assignment is
made, the external MNCC agent never receives an MNCC_RTP_CREATE for
call 2 - and without RTP stream info that call cannot be connected,
and thus call 2 establishment fails.
The present patch is a hack that makes call waiting work in basic
usage testing: in the already-detected case of "Another call
is already ongoing" in msc_a_try_call_assignment(), simply call
gsm48_tch_rtp_create() and hope that a successful channel assignment
has already been made, and that the existing TCH is good enough for
the new call which could have different bearer capabilities and thus
different TCH requirements.
Related: OS#5699
Change-Id: Ibb62cb3c154b99769b2dfe708f73c20e8b632f5d
---
M src/libmsc/msc_a.c
1 file changed, 2 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/73/29973/1
diff --git a/src/libmsc/msc_a.c b/src/libmsc/msc_a.c
index d7e97cd..e909fd0 100644
--- a/src/libmsc/msc_a.c
+++ b/src/libmsc/msc_a.c
@@ -1797,6 +1797,8 @@
if (msc_a->cc.active_trans) {
LOG_MSC_A(msc_a, LOGL_INFO, "Another call is already ongoing, not assigning yet\n");
+ /* a hack to make call waiting work */
+ gsm48_tch_rtp_create(cc_trans);
return 0;
}
To view, visit change 29973. To unsubscribe, or for help writing mail filters, visit settings.