You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ff...@apache.org on 2018/09/04 04:09:16 UTC
[cxf] branch 3.2.x-fixes updated: [CXF-7831]SocketTimeoutException
when previous response was exactly chunk length bytes
This is an automated email from the ASF dual-hosted git repository.
ffang pushed a commit to branch 3.2.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/3.2.x-fixes by this push:
new 93be601 [CXF-7831]SocketTimeoutException when previous response was exactly chunk length bytes
93be601 is described below
commit 93be601bfd0bd94377784602eed044ec8528ad1c
Author: Freeman Fang <fr...@gmail.com>
AuthorDate: Tue Sep 4 12:08:15 2018 +0800
[CXF-7831]SocketTimeoutException when previous response was exactly chunk length bytes
(cherry picked from commit 782d565f896bc996631c2b092580a116bd65c1e2)
---
.../http/asyncclient/SharedInputBuffer.java | 2 +-
.../http/asyncclient/AsyncHTTPConduitTest.java | 22 +++++++++++++++++++++-
2 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/rt/transports/http-hc/src/main/java/org/apache/cxf/transport/http/asyncclient/SharedInputBuffer.java b/rt/transports/http-hc/src/main/java/org/apache/cxf/transport/http/asyncclient/SharedInputBuffer.java
index a2c52ca..472d9db 100644
--- a/rt/transports/http-hc/src/main/java/org/apache/cxf/transport/http/asyncclient/SharedInputBuffer.java
+++ b/rt/transports/http-hc/src/main/java/org/apache/cxf/transport/http/asyncclient/SharedInputBuffer.java
@@ -108,7 +108,7 @@ public class SharedInputBuffer extends ExpandableBuffer {
if (bytesRead == -1 || decoder.isCompleted()) {
this.endOfStream = true;
}
- if (!this.buffer.hasRemaining() && this.ioctrl != null) {
+ if (!this.buffer.hasRemaining() && this.ioctrl != null && !this.endOfStream) {
this.ioctrl.suspendInput();
}
this.condition.signalAll();
diff --git a/rt/transports/http-hc/src/test/java/org/apache/cxf/transport/http/asyncclient/AsyncHTTPConduitTest.java b/rt/transports/http-hc/src/test/java/org/apache/cxf/transport/http/asyncclient/AsyncHTTPConduitTest.java
index f86eff9..e5e438e 100644
--- a/rt/transports/http-hc/src/test/java/org/apache/cxf/transport/http/asyncclient/AsyncHTTPConduitTest.java
+++ b/rt/transports/http-hc/src/test/java/org/apache/cxf/transport/http/asyncclient/AsyncHTTPConduitTest.java
@@ -20,6 +20,7 @@
package org.apache.cxf.transport.http.asyncclient;
import java.net.URL;
+import java.util.Collections;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
@@ -54,6 +55,7 @@ import org.junit.Test;
public class AsyncHTTPConduitTest extends AbstractBusClientServerTestBase {
public static final String PORT = allocatePort(AsyncHTTPConduitTest.class);
public static final String PORT_INV = allocatePort(AsyncHTTPConduitTest.class, 2);
+ public static final String FILL_BUFFER = "FillBuffer";
static Endpoint ep;
static String request;
@@ -94,7 +96,11 @@ public class AsyncHTTPConduitTest extends AbstractBusClientServerTestBase {
return "Hello, finally! " + cnt;
}
public String greetMe(String me) {
- return "Hello " + me;
+ if (me.equals(FILL_BUFFER)) {
+ return String.join("", Collections.nCopies(16093, " "));
+ } else {
+ return "Hello " + me;
+ }
}
});
@@ -120,6 +126,20 @@ public class AsyncHTTPConduitTest extends AbstractBusClientServerTestBase {
ep.stop();
ep = null;
}
+
+ @Test
+ public void testResponseSameBufferSize() throws Exception {
+ updateAddressPort(g, PORT);
+ HTTPConduit c = (HTTPConduit)ClientProxy.getClient(g).getConduit();
+ c.getClient().setReceiveTimeout(12000);
+ try {
+ g.greetMe(FILL_BUFFER);
+ g.greetMe("Hello");
+ } catch (Exception ex) {
+ fail();
+ }
+ }
+
@Test
public void testTimeout() throws Exception {
updateAddressPort(g, PORT);