From 85646c1df349c09bdab4daf87a59700a0eb9fa10 Mon Sep 17 00:00:00 2001 From: Hung-ying Tyan Date: Tue, 14 Jul 2009 16:19:17 +0800 Subject: Make VPN connect even when DNS is not present and other fixes. * Changes: + As title. + Add two new states to VpnState: UNKNOWN and UNUSABLE. + Add more debug messages when stopping a service and when DNS being overridden. --- .../src/com/android/server/vpn/AndroidServiceProxy.java | 3 ++- .../VpnServices/src/com/android/server/vpn/VpnService.java | 10 ++++++---- vpn/java/android/net/vpn/VpnState.java | 7 ++++++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/VpnServices/src/com/android/server/vpn/AndroidServiceProxy.java b/packages/VpnServices/src/com/android/server/vpn/AndroidServiceProxy.java index 7e8185ef4370..c6c94521faf8 100644 --- a/packages/VpnServices/src/com/android/server/vpn/AndroidServiceProxy.java +++ b/packages/VpnServices/src/com/android/server/vpn/AndroidServiceProxy.java @@ -84,6 +84,7 @@ public class AndroidServiceProxy extends ProcessProxy { throw new RuntimeException(e); } } + Log.d(mTag, "----- Stop: " + mServiceName); SystemProperties.set(SVC_STOP_CMD, mServiceName); } @@ -105,7 +106,7 @@ public class AndroidServiceProxy extends ProcessProxy { @Override protected void performTask() throws IOException { String svc = mServiceName; - Log.d(mTag, "+++++ Execute: " + svc); + Log.d(mTag, "+++++ Start: " + svc); SystemProperties.set(SVC_START_CMD, svc); boolean success = blockUntil(SVC_STATE_RUNNING, WAITING_TIME); diff --git a/packages/VpnServices/src/com/android/server/vpn/VpnService.java b/packages/VpnServices/src/com/android/server/vpn/VpnService.java index b2a944566520..26322f46394a 100644 --- a/packages/VpnServices/src/com/android/server/vpn/VpnService.java +++ b/packages/VpnServices/src/com/android/server/vpn/VpnService.java @@ -299,12 +299,12 @@ abstract class VpnService { private void saveVpnDnsProperties() { mOriginalDns1 = mOriginalDns2 = ""; - for (int i = 0; i < 10; i++) { + for (int i = 0; i < 5; i++) { mVpnDns1 = SystemProperties.get(VPN_DNS1); mVpnDns2 = SystemProperties.get(VPN_DNS2); if (mOriginalDns1.equals(mVpnDns1)) { Log.d(TAG, "wait for vpn dns to settle in..." + i); - sleep(500); + sleep(200); } else { mOriginalDns1 = SystemProperties.get(DNS1); mOriginalDns2 = SystemProperties.get(DNS2); @@ -317,7 +317,9 @@ abstract class VpnService { return; } } - Log.e(TAG, "saveVpnDnsProperties(): DNS not updated??"); + Log.d(TAG, "saveVpnDnsProperties(): DNS not updated??"); + mOriginalDns1 = mVpnDns1 = SystemProperties.get(DNS1); + mOriginalDns2 = mVpnDns2 = SystemProperties.get(DNS2); } private void saveAndSetDomainSuffices() { @@ -374,7 +376,7 @@ abstract class VpnService { private void checkDnsProperties() { String dns1 = SystemProperties.get(DNS1); if (!mVpnDns1.equals(dns1)) { - Log.w(TAG, " @@ !!! dns being overridden"); + Log.w(TAG, " dns being overridden by: " + dns1); onError(); } } diff --git a/vpn/java/android/net/vpn/VpnState.java b/vpn/java/android/net/vpn/VpnState.java index ebd936454f88..6e61f9c0a712 100644 --- a/vpn/java/android/net/vpn/VpnState.java +++ b/vpn/java/android/net/vpn/VpnState.java @@ -26,8 +26,13 @@ package android.net.vpn; * {@link DISCONNECTING} and then {@link IDLE}. * {@link CANCELLED} is a state when a VPN connection attempt is aborted, and * is in transition to {@link IDLE}. + * The {@link UNUSABLE} state indicates that the profile is not in a state for + * connecting due to possibly the integrity of the fields or another profile is + * connecting etc. + * The {@link UNKNOWN} state indicates that the profile state is to be + * determined. * {@hide} */ public enum VpnState { - CONNECTING, DISCONNECTING, CANCELLED, CONNECTED, IDLE + CONNECTING, DISCONNECTING, CANCELLED, CONNECTED, IDLE, UNUSABLE, UNKNOWN } -- cgit v1.2.3-59-g8ed1b