--- 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 {