Hi, I think we need the patch below to fix the following case:
Socket sock = new Socket(); sock.setKeepAlive(false); Currently this throws a NullPointerException (on IKVM at least), because the impl.create() hasn't been called yet. Any comments? Regards, Jeroen Index: java/net/Socket.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/net/Socket.java,v retrieving revision 1.61 diff -u -r1.61 Socket.java --- java/net/Socket.java 12 Feb 2007 18:56:48 -0000 1.61 +++ java/net/Socket.java 5 Mar 2007 14:12:35 -0000 @@ -83,6 +83,11 @@ SocketImpl impl; /** + * True if impl.create() has been called. + */ + private boolean implCreated; + + /** * True if the socket is bound. * Package private so it can be set from ServerSocket when accept is called. */ @@ -326,6 +331,18 @@ private SocketImpl getImpl() throws SocketException { + if (! implCreated) + { + try + { + impl.create(true); + } + catch (IOException x) + { + throw (SocketException) new SocketException().initCause(x); + } + implCreated = true; + } return impl; } @@ -359,7 +376,6 @@ // bind to address/port try { - getImpl().create(true); getImpl().bind(tmp.getAddress(), tmp.getPort()); bound = true; }