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

Commit 1ad4e225 authored by Erik Kline's avatar Erik Kline
Browse files

Also treat loss of IPv6 as a loss of provisioning.

Bug: 23226635
Change-Id: Icebb7d83ed5b3b796901b9f023909a02eb461941
parent 78031818
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -119,8 +119,12 @@ public final class LinkProperties implements Parcelable {
            //
            // For one such example of this, see b/18867306.
            //
            // TODO: Remove this special case altogether.
            if (before.isIPv4Provisioned() && !after.isIPv4Provisioned()) {
            // Additionally, losing IPv6 provisioning can result in TCP
            // connections getting stuck until timeouts fire and other
            // baffling failures. Therefore, loss of either IPv4 or IPv6 on a
            // previously dualstack network is deemed a lost of provisioning.
            if ((before.isIPv4Provisioned() && !after.isIPv4Provisioned()) ||
                (before.isIPv6Provisioned() && !after.isIPv6Provisioned())) {
                return ProvisioningChange.LOST_PROVISIONING;
            }
            return ProvisioningChange.STILL_PROVISIONED;
+4 −0
Original line number Diff line number Diff line
@@ -560,10 +560,14 @@ public class LinkPropertiesTest extends TestCase {
        assertTrue(v46lp.isIPv6Provisioned());
        assertTrue(v46lp.isProvisioned());

        assertEquals(ProvisioningChange.STILL_PROVISIONED,
                LinkProperties.compareProvisioning(v4lp, v46lp));
        assertEquals(ProvisioningChange.STILL_PROVISIONED,
                LinkProperties.compareProvisioning(v6lp, v46lp));
        assertEquals(ProvisioningChange.LOST_PROVISIONING,
                LinkProperties.compareProvisioning(v46lp, v6lp));
        assertEquals(ProvisioningChange.LOST_PROVISIONING,
                LinkProperties.compareProvisioning(v46lp, v4lp));

        // Check that losing and gaining a secondary router does not change
        // the provisioning status.