diff --git a/Vcn/service-b/src/com/android/server/vcn/Vcn.java b/Vcn/service-b/src/com/android/server/vcn/Vcn.java index 37f04501bf..5a5f7ef7b2 100644 --- a/Vcn/service-b/src/com/android/server/vcn/Vcn.java +++ b/Vcn/service-b/src/com/android/server/vcn/Vcn.java @@ -626,8 +626,12 @@ public class Vcn extends Handler { * Dumps the state of this Vcn for logging and debugging purposes. * *

PII and credentials MUST NEVER be dumped here. + * + *

This method is not thread safe and MUST run on the VCN thread. */ public void dump(IndentingPrintWriter pw) { + mVcnContext.ensureRunningOnLooperThread(); + pw.println("Vcn (" + mSubscriptionGroup + "):"); pw.increaseIndent(); diff --git a/Vcn/service-b/src/com/android/server/vcn/VcnGatewayConnection.java b/Vcn/service-b/src/com/android/server/vcn/VcnGatewayConnection.java index 3094b18209..8d378a021f 100644 --- a/Vcn/service-b/src/com/android/server/vcn/VcnGatewayConnection.java +++ b/Vcn/service-b/src/com/android/server/vcn/VcnGatewayConnection.java @@ -2580,8 +2580,12 @@ public class VcnGatewayConnection extends StateMachine { * Dumps the state of this VcnGatewayConnection for logging and debugging purposes. * *

PII and credentials MUST NEVER be dumped here. + * + *

This method is not thread safe and MUST run on the VCN thread. */ public void dump(IndentingPrintWriter pw) { + mVcnContext.ensureRunningOnLooperThread(); + pw.println("VcnGatewayConnection (" + mConnectionConfig.getGatewayConnectionName() + "):"); pw.increaseIndent(); @@ -2602,6 +2606,19 @@ public class VcnGatewayConnection extends StateMachine { mUnderlyingNetworkController.dump(pw); pw.println(); + if (mIkeSession == null) { + pw.println("mIkeSession: null"); + } else { + pw.println("mIkeSession:"); + + // Add a try catch block in case IkeSession#dump is not thread-safe + try { + mIkeSession.dump(pw); + } catch (Exception e) { + Slog.wtf(TAG, "Failed to dump IkeSession: " + e); + } + } + pw.decreaseIndent(); } @@ -2905,6 +2922,11 @@ public class VcnGatewayConnection extends StateMachine { public void setNetwork(@NonNull Network network) { mImpl.setNetwork(network); } + + /** Dumps the state of the IkeSession */ + public void dump(@NonNull IndentingPrintWriter pw) { + mImpl.dump(pw); + } } /** Proxy Implementation of WakeLock, used for testing. */