For handled commands, in case the terminal response is not reported by
the modem, we must set the cancel_cmd variable so the command is
canceled properly.
This patch also modifies the behavior so that pending_cmd is freed,
since stk_proactive_command_cancel expects cancel_cmd to be set if
pending_cmd is not NULL.
The Send DTMF command is special in its use of DisplayAction method of
STK agent. This allows the user to send a 'User Terminated Session'
response to the SIM. If the user performs this action, then any pending
DTMFs should also be canceled as soon as possible.
respond_on_exit flag is set by commands which are dispatched to the
agent, so that if the agent exits prematurely, a 'User Terminated
Session' response is sent to the SIM.
There were a couple of corner cases not quite handled correctly:
- During Set Up Call, if the user confirmation phase succeeded and the
call was dispatched to voicecall atom successfully, and the agent
exited at this point, then no terminal response would be sent until
the call succeeded / failed. Now the agent termination results in an
'User Terminated Session' response being sent immediately, but the
call setup proceeding.
Fixes the crash seen with the null alpha identifier.
Also removed the icon check since the decision of whether to inform the
user of the action is dependent entirely on whether the alpha identifier
is provided by the UICC.
As per the ETSI TS 102 223 specification 8.12.2, it is
mandatory to provide additional information for the
general result "ME currently unable to process command".
If a SET UP CALL proactive command with no alpha identifier
occurs, the alpha_id pointer will be set to NULL. This will
generate a crash in the stkagent with dbus function. To avoid
this we use an empty string if the alpha identifier is not
present in the command.
According to the sequence 1.2 of the ETSI TS 102 384 a busy
screen error should be returns for the display text proactive
command when the ME is not able to display the text.
This patch was generated by the following semantic patch
(http://coccinelle.lip6.fr/)
// <smpl>
@fix disable is_null,isnt_null1@
expression *E;
@@
- !E
+ E == NULL
// </smpl>
Add a NULL check in dbus_apply_text_attributes because in some places
(like DisplayText handler) we call it without checking and we just check
the return value once.