diff -r c943ca4a3380 -r 39275d6a8cac jdk/src/java.base/share/classes/sun/nio/ch/DatagramChannelImpl.java --- 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); + } + } + } } } }