private void writeData(ByteChunk chunk) throws IOException { // Prevent timeout socketWrapper.access(); boolean blocking = (response.getWriteListener() == null); if (!blocking) { flushBufferedData(); } int len = chunk.getLength(); int off = 0; // Write this chunk while (responseMsgPos == -1 && len > 0) { int thisTime = len; if (thisTime > outputMaxChunkSize) { thisTime = outputMaxChunkSize; } responseMessage.reset(); responseMessage.appendByte(Constants.JK_AJP13_SEND_BODY_CHUNK); responseMessage.appendBytes(chunk.getBytes(), chunk.getOffset() + off, thisTime); responseMessage.end(); writeResponseMessage(blocking); len -= thisTime; off += thisTime; } bytesWritten += off; if (len > 0) { // Add this chunk to the buffer addToBuffers(chunk.getBuffer(), off, len); } }
try { if (hasDataToWrite()) { flushBufferedData(); if (hasDataToWrite()) {