Windows does not support asynchronous close on sockets when doing blocking operations with a buffer size >= 128k. The long standing Microsoft recommendation is to limit such I/O operations to 64k. Since 6395224 then we limit I/O operations to 128k-1 so that asynchronous close works as specified but a side effect of this is that attempts to write 128k+ bytes will be result in a short write. This is not an issue for applications that check the return value from write but is a problem for applications that don't check the return value. This bug is submitted to re-visit this issue with a view to the write(ByteBuffer) method writing as many bytes as possible.