src/java.base/share/classes/java/net/AbstractPlainDatagramSocketImpl.java
changeset 59224 55fdee124e89
parent 59200 a686b67a59d9
--- a/src/java.base/share/classes/java/net/AbstractPlainDatagramSocketImpl.java	Fri Nov 22 10:07:21 2019 +0000
+++ b/src/java.base/share/classes/java/net/AbstractPlainDatagramSocketImpl.java	Fri Nov 22 11:52:48 2019 +0000
@@ -482,7 +482,9 @@
                 throw new IllegalArgumentException("Invalid TTL/hop value: " + value);
             setTimeToLive((Integer)value);
         } else if (name == StandardSocketOptions.IP_MULTICAST_LOOP) {
-            setOption(SocketOptions.IP_MULTICAST_LOOP, value);
+            boolean enable = (boolean) value;
+            // Legacy setOption expects true to mean 'disabled'
+            setOption(SocketOptions.IP_MULTICAST_LOOP, !enable);
         } else if (extendedOptions.isOptionSupported(name)) {
             extendedOptions.setOption(fd, name, value);
         } else {
@@ -517,7 +519,9 @@
         } else if (name == StandardSocketOptions.IP_MULTICAST_TTL) {
             return (T) ((Integer) getTimeToLive());
         } else if (name == StandardSocketOptions.IP_MULTICAST_LOOP) {
-            return (T) getOption(SocketOptions.IP_MULTICAST_LOOP);
+            boolean disabled = (boolean) getOption(SocketOptions.IP_MULTICAST_LOOP);
+            // Legacy getOption returns true when disabled
+            return (T) Boolean.valueOf(!disabled);
         } else if (extendedOptions.isOptionSupported(name)) {
             return (T) extendedOptions.getOption(fd, name);
         } else {