diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-01-10 03:16:42 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-01-10 03:16:42 +0100 |
commit | 0b5cfcf923f8fbe8313969120f44a59c65d0b2f1 (patch) | |
tree | 16b43b67a65ce141d920412d22331e8e1b2385b6 /app/src/main/java/com/wireguard/android/backend | |
parent | Tunnel: ifname has max len 15 (diff) | |
download | wireguard-android-0b5cfcf923f8fbe8313969120f44a59c65d0b2f1.tar.xz wireguard-android-0b5cfcf923f8fbe8313969120f44a59c65d0b2f1.zip |
WgQuickBackend: properly report exception so alert shows
Diffstat (limited to 'app/src/main/java/com/wireguard/android/backend')
-rw-r--r-- | app/src/main/java/com/wireguard/android/backend/WgQuickBackend.java | 21 |
1 files changed, 15 insertions, 6 deletions
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); + } + } } |