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

Commit 7477bf15 authored by Ling Ma's avatar Ling Ma Committed by Jack Yu
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
Merged-In: I5598acac410400b4e3abd9a3ca3d1ec29efcbbe6
Change-Id: I5598acac410400b4e3abd9a3ca3d1ec29efcbbe6
parent 2b72a22a
Loading
Loading
Loading
Loading
+9 −5
Original line number Original line Diff line number Diff line
@@ -2390,7 +2390,7 @@ public class DataNetwork extends StateMachine {
        logl("onSetupResponse: resultCode=" + DataServiceCallback.resultCodeToString(resultCode)
        logl("onSetupResponse: resultCode=" + DataServiceCallback.resultCodeToString(resultCode)
                + ", response=" + response);
                + ", response=" + response);
        mFailCause = getFailCauseFromDataCallResponse(resultCode, response);
        mFailCause = getFailCauseFromDataCallResponse(resultCode, response);
        validateDataCallResponse(response);
        validateDataCallResponse(response, true /*isSetupResponse*/);
        if (mFailCause == DataFailCause.NONE) {
        if (mFailCause == DataFailCause.NONE) {
            DataNetwork dataNetwork = mDataNetworkController.getDataNetworkByInterface(
            DataNetwork dataNetwork = mDataNetworkController.getDataNetworkByInterface(
                    response.getInterfaceName());
                    response.getInterfaceName());
@@ -2462,8 +2462,10 @@ public class DataNetwork extends StateMachine {
     * If the {@link DataCallResponse} contains invalid info, triggers an anomaly report.
     * If the {@link DataCallResponse} contains invalid info, triggers an anomaly report.
     *
     *
     * @param response The response to be validated
     * @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
        if (response == null
                || response.getLinkStatus() == DataCallResponse.LINK_STATUS_INACTIVE) return;
                || response.getLinkStatus() == DataCallResponse.LINK_STATUS_INACTIVE) return;
        int failCause = response.getCause();
        int failCause = response.getCause();
@@ -2483,8 +2485,10 @@ public class DataNetwork extends StateMachine {
                reportAnomaly("Invalid DataCallResponse detected",
                reportAnomaly("Invalid DataCallResponse detected",
                        "1f273e9d-b09c-46eb-ad1c-421d01f61164");
                        "1f273e9d-b09c-46eb-ad1c-421d01f61164");
            }
            }
            // Check IP for initial setup response
            NetworkRegistrationInfo nri = getNetworkRegistrationInfo();
            NetworkRegistrationInfo nri = getNetworkRegistrationInfo();
            if (mDataProfile.getApnSetting() != null && nri != null && nri.isInService()) {
            if (isSetupResponse
                    && mDataProfile.getApnSetting() != null && nri != null && nri.isInService()) {
                boolean isRoaming = nri.getNetworkRegistrationState()
                boolean isRoaming = nri.getNetworkRegistrationState()
                        == NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING;
                        == NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING;
                int protocol = isRoaming ? mDataProfile.getApnSetting().getRoamingProtocol()
                int protocol = isRoaming ? mDataProfile.getApnSetting().getRoamingProtocol()
@@ -2644,7 +2648,7 @@ public class DataNetwork extends StateMachine {
        if (response != null) {
        if (response != null) {
            if (!response.equals(mDataCallResponse)) {
            if (!response.equals(mDataCallResponse)) {
                log("onDataStateChanged: " + response);
                log("onDataStateChanged: " + response);
                validateDataCallResponse(response);
                validateDataCallResponse(response, false /*isSetupResponse*/);
                mDataCallResponse = response;
                mDataCallResponse = response;
                if (response.getLinkStatus() != DataCallResponse.LINK_STATUS_INACTIVE) {
                if (response.getLinkStatus() != DataCallResponse.LINK_STATUS_INACTIVE) {
                    updateDataNetwork(response);
                    updateDataNetwork(response);
@@ -3222,7 +3226,7 @@ public class DataNetwork extends StateMachine {
        logl("onHandoverResponse: resultCode=" + DataServiceCallback.resultCodeToString(resultCode)
        logl("onHandoverResponse: resultCode=" + DataServiceCallback.resultCodeToString(resultCode)
                + ", response=" + response);
                + ", response=" + response);
        mFailCause = getFailCauseFromDataCallResponse(resultCode, response);
        mFailCause = getFailCauseFromDataCallResponse(resultCode, response);
        validateDataCallResponse(response);
        validateDataCallResponse(response, false /*isSetupResponse*/);
        if (mFailCause == DataFailCause.NONE) {
        if (mFailCause == DataFailCause.NONE) {
            // Handover succeeded.
            // Handover succeeded.