]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
android: Ignore IllegalArgumentException for multicast addresses
authorTobias Brunner <tobias@strongswan.org>
Mon, 11 Sep 2017 17:14:31 +0000 (19:14 +0200)
committerTobias Brunner <tobias@strongswan.org>
Mon, 18 Sep 2017 09:00:58 +0000 (11:00 +0200)
Some Android versions seem to reject routes that use multicast addresses.

Fixes #2420.

src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java

index ba3d434cebdf55f97a1314b78170845bb54dbd19..61535ffa2e68b28eb70db23c9181da641f64a070 100644 (file)
@@ -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)