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

Commit 5e7955f3 authored by Austen Dicken's avatar Austen Dicken
Browse files

add fallback for cached default routes

on occasion, the cached default route fails.  if this happens, we
want to restart the network, so we teardown and reconnect in an
attempt to get things working again.

Change-Id: Ic3a2b67afae9eb84066d5ab4abd38919cf874c74
parent 6b3e9b1a
Loading
Loading
Loading
Loading
+14 −3
Original line number Diff line number Diff line
@@ -167,13 +167,26 @@ public abstract class NetworkStateTracker extends Handler {
            }

            if (mDefaultGatewayAddr != 0) {
                NetworkUtils.addHostRoute(mInterfaceName, mDefaultGatewayAddr);
                NetworkUtils.setDefaultRoute(mInterfaceName, mDefaultGatewayAddr);
            } else if (mCachedGatewayAddr != 0) {
                /*
                 * We don't have a default gateway set, so check if we have one cached due to
                 * a previous suspension.  If we do, then restore that one
                 */
                NetworkUtils.setDefaultRoute(mInterfaceName, mCachedGatewayAddr);
                if (DBG) {
                    Log.d(TAG, "addDefaultRoute: no default gateway, attempting to use cached gateway");
                }
                int r1 = NetworkUtils.addHostRoute(mInterfaceName, mCachedGatewayAddr);
                int r2 = NetworkUtils.setDefaultRoute(mInterfaceName, mCachedGatewayAddr);
                if (r1 < 0 || r2 < 0) {
                    // something went wrong... restart the network
                    if (DBG) {
                        Log.d(TAG, "addDefaultRoute: something went terribly wrong... restart the network");
                    }
                    teardown();
                    reconnect();
                }
            }

            /*
@@ -181,8 +194,6 @@ public abstract class NetworkStateTracker extends Handler {
             * were hit.
             */
            mCachedGatewayAddr = 0;
            NetworkUtils.addHostRoute(mInterfaceName, mDefaultGatewayAddr);
            NetworkUtils.setDefaultRoute(mInterfaceName, mDefaultGatewayAddr);
        }
    }