Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 89c13761 authored by Malcolm Chen's avatar Malcolm Chen Committed by android-build-merger
Browse files

Merge "Resolve possible race condition in CellularNetworkService" am: 6f3f4d42

am: 59404be7

Change-Id: Ib715e8dd35d44912829fbd3de4d2a4081d655150
parents af69c505 59404be7
Loading
Loading
Loading
Loading
+5 −6
Original line number Original line Diff line number Diff line
@@ -40,8 +40,7 @@ import android.telephony.Rlog;
import android.telephony.ServiceState;
import android.telephony.ServiceState;
import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionManager;


import java.util.HashMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.Map;


/**
/**
 * Implementation of network services for Cellular. It's a service that handles network requests
 * Implementation of network services for Cellular. It's a service that handles network requests
@@ -59,7 +58,8 @@ public class CellularNetworkService extends NetworkService {


    private class CellularNetworkServiceProvider extends NetworkServiceProvider {
    private class CellularNetworkServiceProvider extends NetworkServiceProvider {


        private final Map<Message, NetworkServiceCallback> mCallbackMap = new HashMap<>();
        private final ConcurrentHashMap<Message, NetworkServiceCallback> mCallbackMap =
                new ConcurrentHashMap<>();


        private final Looper mLooper;
        private final Looper mLooper;


@@ -315,18 +315,17 @@ public class CellularNetworkService extends NetworkService {


            if (domain == NetworkRegistrationState.DOMAIN_CS) {
            if (domain == NetworkRegistrationState.DOMAIN_CS) {
                message = Message.obtain(mHandler, GET_CS_REGISTRATION_STATE_DONE);
                message = Message.obtain(mHandler, GET_CS_REGISTRATION_STATE_DONE);
                mCallbackMap.put(message, callback);
                mPhone.mCi.getVoiceRegistrationState(message);
                mPhone.mCi.getVoiceRegistrationState(message);
            } else if (domain == NetworkRegistrationState.DOMAIN_PS) {
            } else if (domain == NetworkRegistrationState.DOMAIN_PS) {
                message = Message.obtain(mHandler, GET_PS_REGISTRATION_STATE_DONE);
                message = Message.obtain(mHandler, GET_PS_REGISTRATION_STATE_DONE);
                mCallbackMap.put(message, callback);
                mPhone.mCi.getDataRegistrationState(message);
                mPhone.mCi.getDataRegistrationState(message);
            } else {
            } else {
                loge("getNetworkRegistrationState invalid domain " + domain);
                loge("getNetworkRegistrationState invalid domain " + domain);
                callback.onGetNetworkRegistrationStateComplete(
                callback.onGetNetworkRegistrationStateComplete(
                        NetworkServiceCallback.RESULT_ERROR_INVALID_ARG, null);
                        NetworkServiceCallback.RESULT_ERROR_INVALID_ARG, null);
                return;
            }
            }

            mCallbackMap.put(message, callback);
        }
        }


        @CallSuper
        @CallSuper