The "USSD terminated by network" notification is handled to recover the idle state in case of USSD transaction error. --- src/ussd.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/src/ussd.c b/src/ussd.c index 74888b2..a35f172 100644 --- a/src/ussd.c +++ b/src/ussd.c @@ -414,6 +414,18 @@ void ofono_ussd_notify(struct ofono_ussd *ussd, int status, int dcs, return; } + if (status == OFONO_USSD_STATUS_TERMINATED && + (ussd->state == USSD_STATE_IDLE || + ussd->state == USSD_STATE_USER_ACTION)) { + ussd_change_state(ussd, USSD_STATE_IDLE); + + if (ussd->pending == NULL) + return; + + reply = __ofono_error_failed(ussd->pending); + goto out; + } + if (status == OFONO_USSD_STATUS_NOT_SUPPORTED) { ussd_change_state(ussd, USSD_STATE_IDLE); -- 1.7.9.5 _______________________________________________ ofono mailing list ofono@ofono.org http://lists.ofono.org/listinfo/ofono