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

Reply via email to