< prev index next >
src/java.base/share/classes/java/net/ServerSocket.java
Print this page
@@ -28,12 +28,10 @@
import java.io.FileDescriptor;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.nio.channels.ServerSocketChannel;
-import java.security.AccessController;
-import java.security.PrivilegedExceptionAction;
import java.util.Set;
import java.util.Collections;
import jdk.internal.access.JavaNetSocketAccess;
import jdk.internal.access.SharedSecrets;
@@ -70,26 +68,20 @@
* The implementation of this Socket.
*/
private SocketImpl impl;
/**
- * Are we using an older SocketImpl?
- */
- private boolean oldImpl = false;
-
- /**
* Creates a server socket with a user-specified {@code SocketImpl}.
*
* @param impl an instance of a SocketImpl to use on the ServerSocket.
*
* @throws NullPointerException if impl is {@code null}.
*
* @since 12
*/
protected ServerSocket(SocketImpl impl) {
this.impl = impl;
- impl.setServerSocket(this);
}
/**
* Creates an unbound server socket.
*
@@ -268,40 +260,17 @@
if (!created)
createImpl();
return impl;
}
- private void checkOldImpl() {
- if (impl == null)
- return;
- // SocketImpl.connect() is a protected method, therefore we need to use
- // getDeclaredMethod, therefore we need permission to access the member
- try {
- AccessController.doPrivileged(
- new PrivilegedExceptionAction<Void>() {
- public Void run() throws NoSuchMethodException {
- impl.getClass().getDeclaredMethod("connect",
- SocketAddress.class,
- int.class);
- return null;
- }
- });
- } catch (java.security.PrivilegedActionException e) {
- oldImpl = true;
- }
- }
-
private void setImpl() {
SocketImplFactory factory = ServerSocket.factory;
if (factory != null) {
impl = factory.createSocketImpl();
- checkOldImpl();
} else {
impl = SocketImpl.createPlatformSocketImpl(true);
}
- if (impl != null)
- impl.setServerSocket(this);
}
/**
* Creates the socket implementation.
*
@@ -366,11 +335,11 @@
* @since 1.4
*/
public void bind(SocketAddress endpoint, int backlog) throws IOException {
if (isClosed())
throw new SocketException("Socket is closed");
- if (!oldImpl && isBound())
+ if (isBound())
throw new SocketException("Already bound");
if (endpoint == null)
endpoint = new InetSocketAddress(0);
if (!(endpoint instanceof InetSocketAddress))
throw new IllegalArgumentException("Unsupported address type");
@@ -720,12 +689,11 @@
*
* @return true if the ServerSocket successfully bound to an address
* @since 1.4
*/
public boolean isBound() {
- // Before 1.3 ServerSockets were always bound during creation
- return bound || oldImpl;
+ return bound;
}
/**
* Returns the closed state of the ServerSocket.
*
@@ -861,18 +829,10 @@
in = impl.getInetAddress();
return "ServerSocket[addr=" + in +
",localport=" + impl.getLocalPort() + "]";
}
- void setBound() {
- bound = true;
- }
-
- void setCreated() {
- created = true;
- }
-
/**
* The factory for all server sockets.
*/
private static volatile SocketImplFactory factory;
< prev index next >