src/java.base/share/classes/sun/nio/ch/Net.java
branchdatagramsocketimpl-branch
changeset 58678 9cf78a70fa4f
parent 57278 bf925a3ee68a
child 58679 9c3209ff7550
--- a/src/java.base/share/classes/sun/nio/ch/Net.java	Thu Oct 17 20:27:44 2019 +0100
+++ b/src/java.base/share/classes/sun/nio/ch/Net.java	Thu Oct 17 20:53:35 2019 +0100
@@ -50,6 +50,7 @@
 import java.util.Enumeration;
 
 import sun.net.ext.ExtendedSocketOptions;
+import sun.net.util.IPAddressUtil;
 import sun.security.action.GetPropertyAction;
 
 public class Net {
@@ -462,6 +463,9 @@
     {
         boolean preferIPv6 = isIPv6Available() &&
             (family != StandardProtocolFamily.INET);
+        if (addr.isLinkLocalAddress()) {
+            addr = IPAddressUtil.toScopedAddress(addr);
+        }
         bind0(fd, preferIPv6, exclusiveBind, addr, port);
     }
 
@@ -481,6 +485,9 @@
     static int connect(ProtocolFamily family, FileDescriptor fd, InetAddress remote, int remotePort)
         throws IOException
     {
+        if (remote.isLinkLocalAddress()) {
+            remote = IPAddressUtil.toScopedAddress(remote);
+        }
         boolean preferIPv6 = isIPv6Available() &&
             (family != StandardProtocolFamily.INET);
         return connect0(preferIPv6, fd, remote, remotePort);