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

Commit 8206ff30 authored by Robert Greenwalt's avatar Robert Greenwalt
Browse files

Fix for multi-apn MMS access.

Mark cellular variants with the same availability, regardless of which are currently in use.
Availability just means the radio is enabled and sees the network, but has no guarantees that
we could connect to an APN if requested.

Fix the requestRouteToHost logic to support apn switches without WIFI.

bug:2093841
parent bcbcaa7e
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -145,12 +145,14 @@ public class MobileDataStateTracker extends NetworkStateTracker {
                    if (DBG) Log.d(TAG, mApnType + " Received " + intent.getAction() +
                            " broadcast - state = " + state + ", oldstate = " + mMobileDataState +
                            ", unavailable = " + unavailable + ", reason = " +
                            (reason == null ? "(unspecified)" : reason));
                            (reason == null ? "(unspecified)" : reason) +
                            ", apnTypeList = " + apnTypeList);

                    // set this regardless of the apnTypeList.  It's all the same radio/network
                    // underneath
                    mNetworkInfo.setIsAvailable(!unavailable);

                    if (isApnTypeIncluded(apnTypeList)) {
                        // set this even if the apn isn't Enabled
                        mNetworkInfo.setIsAvailable(!unavailable);
                        if (mEnabled == false) {
                            // if we're not enabled but the APN Type is supported by this connection
                            // we should record the interface name if one's provided.  If the user
+1 −1
Original line number Diff line number Diff line
@@ -131,7 +131,7 @@ public class NetworkInfo implements Parcelable {
        mSubtypeName = subtypeName;
        setDetailedState(DetailedState.IDLE, null, null);
        mState = State.UNKNOWN;
        mIsAvailable = true;
        mIsAvailable = false; // until we're told otherwise, assume unavailable
        mIsRoaming = false;
    }

+7 −13
Original line number Diff line number Diff line
@@ -640,20 +640,14 @@ public class ConnectivityService extends IConnectivityManager.Stub {
            return false;
        }
        NetworkStateTracker tracker = mNetTrackers[networkType];
        /*
         * If there's only one connected network, and it's the one requested,
         * then we don't have to do anything - the requested route already
         * exists. If it's not the requested network, then it's not possible
         * to establish the requested route. Finally, if there is more than
         * one connected network, then we must insert an entry in the routing
         * table.
         */
        if (getNumConnectedNetworks() > 1) {
            return tracker.requestRouteToHost(hostAddress);
        } else {
            return (mNetAttributes[networkType].isDefault() &&
                    tracker.getNetworkInfo().isConnected());

        if (!tracker.getNetworkInfo().isConnected() || tracker.isTeardownRequested()) {
            if (DBG) {
                Log.d(TAG, "requestRouteToHost on down network (" + networkType + " - dropped");
            }
            return false;
        }
        return tracker.requestRouteToHost(hostAddress);
    }

    /**