jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java
changeset 12047 320a714614e9
parent 9679 d98ae8bc45fc
child 12440 2689ca179e22
--- a/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java	Tue Mar 06 10:25:45 2012 +0800
+++ b/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java	Tue Mar 06 20:34:38 2012 +0000
@@ -509,8 +509,15 @@
         int rem = (pos <= lim ? lim - pos : 0);
 
         boolean preferIPv6 = (family != StandardProtocolFamily.INET);
-        int written = send0(preferIPv6, fd, ((DirectBuffer)bb).address() + pos,
+        int written;
+        try {
+            written = send0(preferIPv6, fd, ((DirectBuffer)bb).address() + pos,
                             rem, target);
+        } catch (PortUnreachableException pue) {
+            if (isConnected())
+                throw pue;
+            written = rem;
+        }
         if (written > 0)
             bb.position(pos + written);
         return written;