From 66b7a08884261e1308fabb4853da6acca8755786 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Mon, 11 Sep 2017 19:14:31 +0200 Subject: [PATCH] android: Ignore IllegalArgumentException for multicast addresses Some Android versions seem to reject routes that use multicast addresses. Fixes #2420. --- .../android/logic/CharonVpnService.java | 25 +++++++++++++++++-- 1 file 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)