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

Commit 27c7595c authored by Ling Ma's avatar Ling Ma
Browse files

Anomaly report only check IP on setup response

Skip the detection for handover response and data state change because fwk doesn't have the most up-to-date roaming info comparing to the data services, thus fwk honor data service's decision in these cases.

Fix: 263820928
Test: voice call + data browsing
Change-Id: I5598acac410400b4e3abd9a3ca3d1ec29efcbbe6
parent 2367fb16
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -2392,7 +2392,7 @@ public class DataNetwork extends StateMachine {
        logl("onSetupResponse: resultCode=" + DataServiceCallback.resultCodeToString(resultCode)
                + ", response=" + response);
        mFailCause = getFailCauseFromDataCallResponse(resultCode, response);
        validateDataCallResponse(response);
        validateDataCallResponse(response, true /*isSetupResponse*/);
        if (mFailCause == DataFailCause.NONE) {
            DataNetwork dataNetwork = mDataNetworkController.getDataNetworkByInterface(
                    response.getInterfaceName());
@@ -2464,8 +2464,10 @@ public class DataNetwork extends StateMachine {
     * If the {@link DataCallResponse} contains invalid info, triggers an anomaly report.
     *
     * @param response The response to be validated
     * @param isSetupResponse {@code true} if the response is for initial data call setup
     */
    private void validateDataCallResponse(@Nullable DataCallResponse response) {
    private void validateDataCallResponse(@Nullable DataCallResponse response,
            boolean isSetupResponse) {
        if (response == null
                || response.getLinkStatus() == DataCallResponse.LINK_STATUS_INACTIVE) return;
        int failCause = response.getCause();
@@ -2485,8 +2487,10 @@ public class DataNetwork extends StateMachine {
                reportAnomaly("Invalid DataCallResponse detected",
                        "1f273e9d-b09c-46eb-ad1c-421d01f61164");
            }
            // Check IP for initial setup response
            NetworkRegistrationInfo nri = getNetworkRegistrationInfo();
            if (mDataProfile.getApnSetting() != null && nri != null && nri.isInService()) {
            if (isSetupResponse
                    && mDataProfile.getApnSetting() != null && nri != null && nri.isInService()) {
                boolean isRoaming = nri.getNetworkRegistrationState()
                        == NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING;
                int protocol = isRoaming ? mDataProfile.getApnSetting().getRoamingProtocol()
@@ -2646,7 +2650,7 @@ public class DataNetwork extends StateMachine {
        if (response != null) {
            if (!response.equals(mDataCallResponse)) {
                log("onDataStateChanged: " + response);
                validateDataCallResponse(response);
                validateDataCallResponse(response, false /*isSetupResponse*/);
                mDataCallResponse = response;
                if (response.getLinkStatus() != DataCallResponse.LINK_STATUS_INACTIVE) {
                    updateDataNetwork(response);
@@ -3224,7 +3228,7 @@ public class DataNetwork extends StateMachine {
        logl("onHandoverResponse: resultCode=" + DataServiceCallback.resultCodeToString(resultCode)
                + ", response=" + response);
        mFailCause = getFailCauseFromDataCallResponse(resultCode, response);
        validateDataCallResponse(response);
        validateDataCallResponse(response, false /*isSetupResponse*/);
        if (mFailCause == DataFailCause.NONE) {
            // Handover succeeded.