diff options
author | Tobias Brunner <tobias@strongswan.org> | 2017-09-11 19:14:31 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2017-09-18 11:00:58 +0200 |
commit | 66b7a08884261e1308fabb4853da6acca8755786 (patch) | |
tree | e0d40066b4a4501f2282c66657d2613d12d8423a | |
parent | 86c10a958fadb207d64ef11eedfeba2bc3eed46c (diff) | |
download | strongswan-66b7a08884261e1308fabb4853da6acca8755786.tar.bz2 strongswan-66b7a08884261e1308fabb4853da6acca8755786.tar.xz |
android: Ignore IllegalArgumentException for multicast addresses
Some Android versions seem to reject routes that use multicast addresses.
Fixes #2420.
-rw-r--r-- | src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java index ba3d434ce..61535ffa2 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java @@ -934,7 +934,18 @@ public class CharonVpnService extends VpnService implements Runnable, VpnStateSe ranges.remove(mExcludedSubnets); for (IPRange subnet : ranges.subnets()) { - builder.addRoute(subnet.getFrom(), subnet.getPrefix()); + try + { + builder.addRoute(subnet.getFrom(), subnet.getPrefix()); + } + catch (IllegalArgumentException e) + { /* some Android versions don't seem to like multicast addresses here, + * ignore it for now */ + if (!subnet.getFrom().isMulticastAddress()) + { + throw e; + } + } } } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) @@ -964,7 +975,17 @@ public class CharonVpnService extends VpnService implements Runnable, VpnStateSe ranges.remove(mExcludedSubnets); for (IPRange subnet : ranges.subnets()) { - builder.addRoute(subnet.getFrom(), subnet.getPrefix()); + try + { + builder.addRoute(subnet.getFrom(), subnet.getPrefix()); + } + catch (IllegalArgumentException e) + { + if (!subnet.getFrom().isMulticastAddress()) + { + throw e; + } + } } } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) |