--- 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);
+ }
+ }
+ }
}
}
}