diff -r 29f983feda95 -r 5351579c46a9 jdk/src/share/classes/java/net/AbstractPlainDatagramSocketImpl.java --- a/jdk/src/share/classes/java/net/AbstractPlainDatagramSocketImpl.java Thu Mar 17 17:16:35 2011 -0700 +++ b/jdk/src/share/classes/java/net/AbstractPlainDatagramSocketImpl.java Thu Mar 17 18:26:50 2011 -0700 @@ -28,6 +28,7 @@ import java.io.IOException; import java.io.InterruptedIOException; import java.util.Enumeration; +import sun.net.ResourceManager; /** * Abstract datagram and multicast socket implementation base class. @@ -66,7 +67,14 @@ */ protected synchronized void create() throws SocketException { fd = new FileDescriptor(); - datagramSocketCreate(); + ResourceManager.beforeUdpCreate(); + try { + datagramSocketCreate(); + } catch (SocketException ioe) { + ResourceManager.afterUdpClose(); + fd = null; + throw ioe; + } } /** @@ -211,6 +219,7 @@ protected void close() { if (fd != null) { datagramSocketClose(); + ResourceManager.afterUdpClose(); fd = null; } }