Prevent dial() return null in a racing condition.
The racing condition happens between dial() returns and the first GET_CURRENT_CALLS query gets handled. If GET_CURRENT_CALLS gets handled before dial() finishs, the pendingMO can be set to null in handlePollCalls() so that dial() will return null. This null connection causes error in PhoneUtils.placeCall(). The Synchronized dial() and handlePollCalls() Methods will make sure the dial() returns before the first GET_CURRENT_CALLS gets handled. bug:6028290 Change-Id: I41b024760acb7dd13b342866180dffe3fdbe1c03
This commit is contained in:
@@ -167,7 +167,7 @@ public final class GsmCallTracker extends CallTracker {
|
||||
/**
|
||||
* clirMode is one of the CLIR_ constants
|
||||
*/
|
||||
Connection
|
||||
synchronized Connection
|
||||
dial (String dialString, int clirMode, UUSInfo uusInfo) throws CallStateException {
|
||||
// note that this triggers call state changed notif
|
||||
clearDisconnected();
|
||||
@@ -406,7 +406,7 @@ public final class GsmCallTracker extends CallTracker {
|
||||
}
|
||||
}
|
||||
|
||||
protected void
|
||||
protected synchronized void
|
||||
handlePollCalls(AsyncResult ar) {
|
||||
List polledCalls;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user