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