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 NotificationReceived/RequestReceived
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.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1299227

Title:
  SupplementaryServices.Initiate() does not return

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ofono/+bug/1299227/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to