jdk/src/share/classes/java/net/AbstractPlainSocketImpl.java
changeset 10704 db5816a6e8c7
parent 10421 2ee16a0f6df5
child 10708 f255532bf336
--- a/jdk/src/share/classes/java/net/AbstractPlainSocketImpl.java	Fri Oct 07 14:09:53 2011 +0100
+++ b/jdk/src/share/classes/java/net/AbstractPlainSocketImpl.java	Mon Oct 10 10:38:35 2011 +0100
@@ -86,10 +86,11 @@
      * is a stream socket (true) or an unconnected UDP socket (false).
      */
     protected synchronized void create(boolean stream) throws IOException {
-        fd = new FileDescriptor();
         this.stream = stream;
         if (!stream) {
             ResourceManager.beforeUdpCreate();
+            // only create the fd after we know we will be able to create the socket
+            fd = new FileDescriptor();
             try {
                 socketCreate(false);
             } catch (IOException ioe) {
@@ -98,6 +99,7 @@
                 throw ioe;
             }
         } else {
+            fd = new FileDescriptor();
             socketCreate(true);
         }
         if (socket != null)