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