Hi Philippe,
On 09/05/2012 11:56 AM, Philippe Nunes wrote:
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 ||
Why do you need this guard?
+ ussd->state == USSD_STATE_USER_ACTION)) {
Or this one for that matter. In theory the terminated notification can
come at any time.
+ 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);
Can't we treat it exactly like 'NOT_SUPPORTED' or 'TIMED_OUT' but with a
different error?
Regards,
-Denis
_______________________________________________
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono