SupplementaryServices.Initiate() does not return
Bug #1299227 reported by
Tiago Salem Herrmann
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ofono (Ubuntu) |
Fix Released
|
High
|
Alfonso Sanchez-Beato |
Bug Description
When I call Initiate() I noticed that I receive the RequestReceived() signal, but Initiate() doesn't actually return. The dbus call remains locked, when I try to Respond() the request, Initiate() is still locked and I get org.ofono.
Cancel() also returns the InProgress error.
Here is the log:
http://
Related branches
Changed in ofono (Ubuntu): | |
importance: | Undecided → High |
assignee: | nobody → Alfonso Sanchez-Beato (alfonsosanchezbeato) |
Changed in ofono (Ubuntu): | |
status: | New → In Progress |
To post a comment you must log in.
The root cause of this bug is as follows:
Initiate() does not return until a USSD notification (event) arrives. Firing the callback moves the state machine of the USSD core so it expects one ON_USSD event to arrive.
In some networks you will receive the ON_USSD event before the reply to SEND_USSD, so if you wait for the SEND_USSD reply to make the callback, the USSD core state machine will not be in the right state and it will not think that the incoming event is related to the previous USSD request, so it will generate a NotificationRec eived/RequestRe ceived signal and Initiate() will still be blocked.
The best way to thing about this is the the ON_UNSOL event is effectively the network reply to the SEND_USSD request.