android: Ignore IllegalArgumentException for multicast addresses
Some Android versions seem to reject routes that use multicast addresses. Fixes #2420.
This commit is contained in:
+23
-2
@@ -934,7 +934,18 @@ public class CharonVpnService extends VpnService implements Runnable, VpnStateSe
|
|||||||
ranges.remove(mExcludedSubnets);
|
ranges.remove(mExcludedSubnets);
|
||||||
for (IPRange subnet : ranges.subnets())
|
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)
|
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);
|
ranges.remove(mExcludedSubnets);
|
||||||
for (IPRange subnet : ranges.subnets())
|
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)
|
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
|
||||||
|
|||||||
Reference in New Issue
Block a user