mncc_builtin: Properly reject DTMF

As per TS 23.014, a GSM MSC must implement mobile-originated DTMF
generation.  We gate the DTMF signalling messages to MNCC, and expect
the external MNCC handler to deal with it.  However, the internal MNCC
handler simply ignored such singalling messages, rather than rejecting
DTMF altogether.

It turns out failure to respond to START DTMF will cause some phones to
behave in interesting ways, particularly with modem
firmware v6.01.00, see https://osmocom.org/issues/1817).  In this case
the phone is not able to release the call as the pending response to the
START DTMF is probably keping a reference or lock of some sort.

Change-Id: I336f0cd0a6396b522d228479a417fd4d606157ac
This commit is contained in:
Harald Welte 2016-10-29 22:23:19 +02:00
parent 5e5d94cd1b
commit 0c566a444b
1 changed files with 2 additions and 0 deletions

View File

@ -386,8 +386,10 @@ int int_mncc_recv(struct gsm_network *net, struct msgb *msg)
case MNCC_FACILITY_IND:
break;
case MNCC_START_DTMF_IND:
rc = mncc_tx_to_cc(net, MNCC_START_DTMF_REJ, data);
break;
case MNCC_STOP_DTMF_IND:
rc = mncc_tx_to_cc(net, MNCC_STOP_DTMF_RSP, data);
break;
case MNCC_MODIFY_IND:
mncc_set_cause(data, GSM48_CAUSE_LOC_PRN_S_LU,