From dfa4a2eb9d15e609cdd22fd1720f49ebbecfdbe6 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Wed, 10 Jan 2018 03:16:42 +0100 Subject: WgQuickBackend: properly report exception so alert shows Signed-off-by: Jason A. Donenfeld --- .../wireguard/android/backend/WgQuickBackend.java | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'app/src/main/java/com/wireguard/android/backend/WgQuickBackend.java') diff --git a/app/src/main/java/com/wireguard/android/backend/WgQuickBackend.java b/app/src/main/java/com/wireguard/android/backend/WgQuickBackend.java index 33c7046f..4306b01e 100644 --- a/app/src/main/java/com/wireguard/android/backend/WgQuickBackend.java +++ b/app/src/main/java/com/wireguard/android/backend/WgQuickBackend.java @@ -103,18 +103,27 @@ public final class WgQuickBackend implements Backend { state = originalState == State.UP ? State.DOWN : State.UP; if (state == originalState) return originalState; + if (state == State.UP && !new File("/sys/module/wireguard").exists()) + throw new ModuleNotLoadedException("WireGuard module not loaded"); Log.d(TAG, "Changing tunnel " + tunnel.getName() + " to state " + state); toolsInstaller.ensureToolsAvailable(); final int result; - if (state == State.UP) { - if (!new File("/sys/module/wireguard").exists()) - throw new ErrnoException("WireGuard module not loaded", OsConstants.ENODEV); + if (state == State.UP) result = bringUpTunnel(tunnel, tunnel.getConfig()); - } else { + else result = rootShell.run(null, "wg-quick down '" + tunnel.getName() + '\''); - } if (result != 0) - throw new Exception("wg-quick failed"); + throw new Exception("Unable to configure tunnel"); return getState(tunnel); } + + public static class ModuleNotLoadedException extends Exception { + public ModuleNotLoadedException(final String message, final Throwable cause) { + super(message, cause); + } + + public ModuleNotLoadedException(final String message) { + super(message); + } + } } -- cgit v1.3-18-gd494