jdk/src/java.base/share/classes/sun/nio/ch/DatagramChannelImpl.java
changeset 27078 39275d6a8cac
parent 25859 3317bb8137f4
child 27724 9a42fe09eb61
--- a/jdk/src/java.base/share/classes/sun/nio/ch/DatagramChannelImpl.java	Tue May 27 08:56:59 2014 -0400
+++ b/jdk/src/java.base/share/classes/sun/nio/ch/DatagramChannelImpl.java	Wed May 28 14:51:24 2014 +0100
@@ -740,6 +740,25 @@
 
                     // set or refresh local address
                     localAddress = Net.localAddress(fd);
+
+                    // flush any packets already received.
+                    boolean blocking = false;
+                    synchronized (blockingLock()) {
+                        try {
+                            blocking = isBlocking();
+                            ByteBuffer tmpBuf = ByteBuffer.allocate(100);
+                            if (blocking) {
+                                configureBlocking(false);
+                            }
+                            do {
+                                tmpBuf.clear();
+                            } while (read(tmpBuf) > 0);
+                        } finally {
+                            if (blocking) {
+                                configureBlocking(true);
+                            }
+                        }
+                    }
                 }
             }
         }