You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2022/05/20 06:54:19 UTC
[tomcat] branch 10.0.x updated: Refactor in preparation for fixing BZ 66077
This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch 10.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/10.0.x by this push:
new 79f63e129e Refactor in preparation for fixing BZ 66077
79f63e129e is described below
commit 79f63e129eefa929470c27e0111a500f447d115a
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Fri May 20 07:51:07 2022 +0100
Refactor in preparation for fixing BZ 66077
---
java/org/apache/tomcat/util/net/AprEndpoint.java | 23 ++++++++++++++++++++++
java/org/apache/tomcat/util/net/NioEndpoint.java | 23 ++++++++++++++++++++++
.../apache/tomcat/util/net/SocketWrapperBase.java | 21 +-------------------
3 files changed, 47 insertions(+), 20 deletions(-)
diff --git a/java/org/apache/tomcat/util/net/AprEndpoint.java b/java/org/apache/tomcat/util/net/AprEndpoint.java
index 7e9f99478a..5b7c457880 100644
--- a/java/org/apache/tomcat/util/net/AprEndpoint.java
+++ b/java/org/apache/tomcat/util/net/AprEndpoint.java
@@ -2395,6 +2395,29 @@ public class AprEndpoint extends AbstractEndpoint<Long,Long> implements SNICallB
}
+ @Override
+ protected boolean flushNonBlocking() throws IOException {
+ boolean dataLeft = !socketBufferHandler.isWriteBufferEmpty();
+
+ // Write to the socket, if there is anything to write
+ if (dataLeft) {
+ doWrite(false);
+ dataLeft = !socketBufferHandler.isWriteBufferEmpty();
+ }
+
+ if (!dataLeft && !nonBlockingWriteBuffer.isEmpty()) {
+ dataLeft = nonBlockingWriteBuffer.write(this, false);
+
+ if (!dataLeft && !socketBufferHandler.isWriteBufferEmpty()) {
+ doWrite(false);
+ dataLeft = !socketBufferHandler.isWriteBufferEmpty();
+ }
+ }
+
+ return dataLeft;
+ }
+
+
@Override
protected void doWrite(boolean block, ByteBuffer from) throws IOException {
Lock readLock = getBlockingStatusReadLock();
diff --git a/java/org/apache/tomcat/util/net/NioEndpoint.java b/java/org/apache/tomcat/util/net/NioEndpoint.java
index 1b691a5603..0a832b60b9 100644
--- a/java/org/apache/tomcat/util/net/NioEndpoint.java
+++ b/java/org/apache/tomcat/util/net/NioEndpoint.java
@@ -1316,6 +1316,29 @@ public class NioEndpoint extends AbstractJsseEndpoint<NioChannel,SocketChannel>
}
+ @Override
+ protected boolean flushNonBlocking() throws IOException {
+ boolean dataLeft = !socketBufferHandler.isWriteBufferEmpty();
+
+ // Write to the socket, if there is anything to write
+ if (dataLeft) {
+ doWrite(false);
+ dataLeft = !socketBufferHandler.isWriteBufferEmpty();
+ }
+
+ if (!dataLeft && !nonBlockingWriteBuffer.isEmpty()) {
+ dataLeft = nonBlockingWriteBuffer.write(this, false);
+
+ if (!dataLeft && !socketBufferHandler.isWriteBufferEmpty()) {
+ doWrite(false);
+ dataLeft = !socketBufferHandler.isWriteBufferEmpty();
+ }
+ }
+
+ return dataLeft;
+ }
+
+
@Override
protected void doWrite(boolean block, ByteBuffer buffer) throws IOException {
int n = 0;
diff --git a/java/org/apache/tomcat/util/net/SocketWrapperBase.java b/java/org/apache/tomcat/util/net/SocketWrapperBase.java
index 61ce372161..e6182a9c4f 100644
--- a/java/org/apache/tomcat/util/net/SocketWrapperBase.java
+++ b/java/org/apache/tomcat/util/net/SocketWrapperBase.java
@@ -706,26 +706,7 @@ public abstract class SocketWrapperBase<E> {
}
- protected boolean flushNonBlocking() throws IOException {
- boolean dataLeft = !socketBufferHandler.isWriteBufferEmpty();
-
- // Write to the socket, if there is anything to write
- if (dataLeft) {
- doWrite(false);
- dataLeft = !socketBufferHandler.isWriteBufferEmpty();
- }
-
- if (!dataLeft && !nonBlockingWriteBuffer.isEmpty()) {
- dataLeft = nonBlockingWriteBuffer.write(this, false);
-
- if (!dataLeft && !socketBufferHandler.isWriteBufferEmpty()) {
- doWrite(false);
- dataLeft = !socketBufferHandler.isWriteBufferEmpty();
- }
- }
-
- return dataLeft;
- }
+ protected abstract boolean flushNonBlocking() throws IOException;
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org