WgQuickBackend: properly report exception so alert shows
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
parent
df3062c7ad
commit
dfa4a2eb9d
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4,8 +4,6 @@ import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.databinding.ViewDataBinding;
|
||||
import android.system.ErrnoException;
|
||||
import android.system.OsConstants;
|
||||
import android.text.Html;
|
||||
import android.text.method.LinkMovementMethod;
|
||||
import android.util.Log;
|
||||
@ -14,6 +12,7 @@ import android.widget.TextView;
|
||||
|
||||
import com.commonsware.cwac.crossport.design.widget.Snackbar;
|
||||
import com.wireguard.android.R;
|
||||
import com.wireguard.android.backend.WgQuickBackend;
|
||||
import com.wireguard.android.databinding.TunnelDetailFragmentBinding;
|
||||
import com.wireguard.android.databinding.TunnelListItemBinding;
|
||||
import com.wireguard.android.model.Tunnel;
|
||||
@ -48,8 +47,8 @@ public final class TunnelController {
|
||||
if (throwable == null)
|
||||
return;
|
||||
final Context context = view.getContext();
|
||||
if (throwable instanceof ErrnoException
|
||||
&& ((ErrnoException) throwable).errno == OsConstants.ENODEV) {
|
||||
if (throwable instanceof WgQuickBackend.ModuleNotLoadedException ||
|
||||
throwable.getCause() instanceof WgQuickBackend.ModuleNotLoadedException) {
|
||||
final String message = context.getString(R.string.not_supported_message);
|
||||
final String title = context.getString(R.string.not_supported_title);
|
||||
final AlertDialog dialog = new AlertDialog.Builder(context)
|
||||
|
Loading…
Reference in New Issue
Block a user