diff options
| author | 2015-10-28 07:07:51 +0000 | |
|---|---|---|
| committer | 2015-10-28 07:07:51 +0000 | |
| commit | 7ae47acb0bfa2bc06e696657e379a285bc2e1082 (patch) | |
| tree | a0e0f3519d1fac6f6852caf785599d1ddd3409ec | |
| parent | 556c8e646668552d6d9ded20449d5365c96d4f95 (diff) | |
| parent | 1ad4e22534b3607ecca849b06efa4547dd58be63 (diff) | |
Merge "Also treat loss of IPv6 as a loss of provisioning."
| -rw-r--r-- | core/java/android/net/LinkProperties.java | 8 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/net/LinkPropertiesTest.java | 4 |
2 files changed, 10 insertions, 2 deletions
diff --git a/core/java/android/net/LinkProperties.java b/core/java/android/net/LinkProperties.java index 6bfa2a495b82..1bb0fbb74a53 100644 --- a/core/java/android/net/LinkProperties.java +++ b/core/java/android/net/LinkProperties.java @@ -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; diff --git a/core/tests/coretests/src/android/net/LinkPropertiesTest.java b/core/tests/coretests/src/android/net/LinkPropertiesTest.java index b6b4f4fa96f9..d5f632190d06 100644 --- a/core/tests/coretests/src/android/net/LinkPropertiesTest.java +++ b/core/tests/coretests/src/android/net/LinkPropertiesTest.java @@ -561,9 +561,13 @@ public class LinkPropertiesTest extends TestCase { 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. |