Index: modules/grizzly/src/main/java/com/sun/grizzly/streams/AbstractStreamWriter.java =================================================================== --- modules/grizzly/src/main/java/com/sun/grizzly/streams/AbstractStreamWriter.java (revision 3430) +++ modules/grizzly/src/main/java/com/sun/grizzly/streams/AbstractStreamWriter.java Wed Jul 08 17:55:50 CDT 2009 @@ -124,6 +124,12 @@ initBuffer(); } else { + // Buffer size could have changed even though it is + // empty. Need to reallocate for this case as well. + if (buffer.capacity() != bufferSize) { + buffer = reallocateBuffer(buffer, bufferSize); + } + future = ZERO_READY_FUTURE; if (completionHandler != null) { completionHandler.completed(connection, ZERO); Index: modules/grizzly/src/main/java/com/sun/grizzly/memory/DefaultMemoryManager.java =================================================================== --- modules/grizzly/src/main/java/com/sun/grizzly/memory/DefaultMemoryManager.java (revision 3430) +++ modules/grizzly/src/main/java/com/sun/grizzly/memory/DefaultMemoryManager.java Wed Jul 08 17:55:50 CDT 2009 @@ -158,7 +158,8 @@ @Override public ByteBufferWrapper reallocate(ByteBufferWrapper oldBuffer, int newSize) { - if (oldBuffer.capacity() <= newSize) return oldBuffer; + // What is this here? Can't reallocate to a bigger buffer? + //if (oldBuffer.capacity() <= newSize) return oldBuffer; if (isDefaultWorkerThread()) { final BufferInfo bufferInfo = getThreadBuffer();