# HG changeset patch # User alanb # Date 1536144728 -3600 # Node ID d4099c45f14884cc8e4c6d379ed07e0130c8b681 # Parent 9ce4a0d718c72f9192ea070faaa56d2a97794859 8209152: (so) ServerSocketChannel::supportedOptions includes IP_TOS Reviewed-by: chegar diff -r 9ce4a0d718c7 -r d4099c45f148 src/java.base/share/classes/sun/nio/ch/ServerSocketChannelImpl.java --- a/src/java.base/share/classes/sun/nio/ch/ServerSocketChannelImpl.java Wed Sep 05 11:15:28 2018 +0200 +++ b/src/java.base/share/classes/sun/nio/ch/ServerSocketChannelImpl.java Wed Sep 05 11:52:08 2018 +0100 @@ -152,13 +152,6 @@ synchronized (stateLock) { ensureOpen(); - if (name == StandardSocketOptions.IP_TOS) { - ProtocolFamily family = Net.isIPv6Available() ? - StandardProtocolFamily.INET6 : StandardProtocolFamily.INET; - Net.setSocketOption(fd, family, name, value); - return this; - } - if (name == StandardSocketOptions.SO_REUSEADDR && Net.useExclusiveBind()) { // SO_REUSEADDR emulated when using exclusive bind isReuseAddress = (Boolean)value; @@ -200,7 +193,6 @@ if (Net.isReusePortAvailable()) { set.add(StandardSocketOptions.SO_REUSEPORT); } - set.add(StandardSocketOptions.IP_TOS); set.addAll(ExtendedSocketOptions.options(SOCK_STREAM)); return Collections.unmodifiableSet(set); } diff -r 9ce4a0d718c7 -r d4099c45f148 test/jdk/java/nio/channels/etc/PrintSupportedOptions.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/jdk/java/nio/channels/etc/PrintSupportedOptions.java Wed Sep 05 11:52:08 2018 +0100 @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @requires (os.family == "linux" | os.family == "mac" | os.family == "windows") + * @bug 8209152 + * @run main PrintSupportedOptions + * @run main/othervm -Djava.net.preferIPv4Stack=true PrintSupportedOptions + */ + +import java.io.IOException; +import java.net.SocketOption; +import java.nio.channels.*; + +public class PrintSupportedOptions { + + @FunctionalInterface + interface NetworkChannelSupplier { + T get() throws IOException; + } + + public static void main(String[] args) throws IOException { + test(() -> SocketChannel.open()); + test(() -> ServerSocketChannel.open()); + test(() -> DatagramChannel.open()); + + test(() -> AsynchronousSocketChannel.open()); + test(() -> AsynchronousServerSocketChannel.open()); + } + + @SuppressWarnings("unchecked") + static + void test(NetworkChannelSupplier supplier) throws IOException { + try (T ch = supplier.get()) { + System.out.println(ch); + for (SocketOption opt : ch.supportedOptions()) { + Object value = ch.getOption(opt); + System.out.format(" %s -> %s%n", opt.name(), value); + if (value != null) { + ch.setOption((SocketOption) opt, value); + } + } + } + } +}