You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2014/04/19 00:30:31 UTC
svn commit: r1588583 -
/tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java
Author: remm
Date: Fri Apr 18 22:30:31 2014
New Revision: 1588583
URL: http://svn.apache.org/r1588583
Log:
Minor flush tweaks.
Modified:
tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java
Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java?rev=1588583&r1=1588582&r2=1588583&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java Fri Apr 18 22:30:31 2014
@@ -378,43 +378,35 @@ public class InternalNio2OutputBuffer ex
// Ignore timeout
}
}
- if (hasMoreDataToFlush()) {
- try {
- if (!flipped) {
- byteBuffer.flip();
- flipped = true;
- }
- if (bufferedWrites.size() > 0) {
- for (ByteBuffer buffer : bufferedWrites) {
- buffer.flip();
- while (buffer.hasRemaining()) {
- if (socket.getSocket().write(buffer).get(socket.getTimeout(), TimeUnit.MILLISECONDS).intValue() < 0) {
- throw new EOFException(sm.getString("iob.failedwrite"));
- }
+ try {
+ if (bufferedWrites.size() > 0) {
+ for (ByteBuffer buffer : bufferedWrites) {
+ buffer.flip();
+ while (buffer.hasRemaining()) {
+ if (socket.getSocket().write(buffer).get(socket.getTimeout(), TimeUnit.MILLISECONDS).intValue() < 0) {
+ throw new EOFException(sm.getString("iob.failedwrite"));
}
}
- bufferedWrites.clear();
- }
- while (byteBuffer.hasRemaining()) {
- if (socket.getSocket().write(byteBuffer).get(socket.getTimeout(), TimeUnit.MILLISECONDS).intValue() < 0) {
- throw new EOFException(sm.getString("iob.failedwrite"));
- }
}
- } catch (InterruptedException | ExecutionException e) {
- throw new IOException(e);
- } catch (TimeoutException e) {
- throw new SocketTimeoutException();
+ bufferedWrites.clear();
}
- if (byteBuffer.remaining() == 0) {
- //blocking writes must empty the buffer
- //and if remaining==0 then we did empty it
- byteBuffer.clear();
- flipped = false;
+ if (!flipped) {
+ byteBuffer.flip();
+ flipped = true;
}
- } else {
- byteBuffer.clear();
- flipped = false;
+ while (byteBuffer.hasRemaining()) {
+ if (socket.getSocket().write(byteBuffer).get(socket.getTimeout(), TimeUnit.MILLISECONDS).intValue() < 0) {
+ throw new EOFException(sm.getString("iob.failedwrite"));
+ }
+ }
+ } catch (InterruptedException | ExecutionException e) {
+ throw new IOException(e);
+ } catch (TimeoutException e) {
+ throw new SocketTimeoutException();
}
+ byteBuffer.clear();
+ flipped = false;
+ return false;
} else {
synchronized (completionHandler) {
if (hasPermit || writePending.tryAcquire()) {
@@ -455,9 +447,9 @@ public class InternalNio2OutputBuffer ex
}
}
}
+ return hasMoreDataToFlush() || hasBufferedData() || e != null;
}
}
- return hasMoreDataToFlush();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org