From 050d914677965376e4530145762feed35f5be363 Mon Sep 17 00:00:00 2001 From: Robin Lee Date: Mon, 14 Mar 2016 13:08:48 +0000 Subject: [PATCH] Skip lockdown setup if user is not up yet Sometimes USER_UNLOCKED can be sent before USER_STARTED. This puts lockdown in a bad state as it needs a fully-functioning user to tie itself to and listen for connectivity events. Bug: 27637943 Change-Id: I41a784a75a8c8674cb61dbba10693dd56c9396dd --- .../core/java/com/android/server/ConnectivityService.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 86040c2842..3c1357742f 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -3253,8 +3253,12 @@ public class ConnectivityService extends IConnectivityManager.Stub } int user = UserHandle.getUserId(Binder.getCallingUid()); synchronized(mVpns) { - setLockdownTracker(new LockdownVpnTracker(mContext, mNetd, this, mVpns.get(user), - profile)); + Vpn vpn = mVpns.get(user); + if (vpn == null) { + Slog.w(TAG, "VPN for user " + user + " not ready yet. Skipping lockdown"); + return false; + } + setLockdownTracker(new LockdownVpnTracker(mContext, mNetd, this, vpn, profile)); } } else { setLockdownTracker(null);