From f3c4d1c89458580d50ab1bacca7d710c7fdd8cb1 Mon Sep 17 00:00:00 2001 From: Andriy Redko Date: Thu, 18 Jun 2026 07:52:02 -0400 Subject: [PATCH 1/2] Respect the AsyncRequestProducer contract by properly implementing available() method --- .../hc5/CXFHttpAsyncRequestProducer.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/rt/transports/http-hc5/src/main/java/org/apache/cxf/transport/http/asyncclient/hc5/CXFHttpAsyncRequestProducer.java b/rt/transports/http-hc5/src/main/java/org/apache/cxf/transport/http/asyncclient/hc5/CXFHttpAsyncRequestProducer.java index 896dcfd68c4..44de7d27d4e 100644 --- a/rt/transports/http-hc5/src/main/java/org/apache/cxf/transport/http/asyncclient/hc5/CXFHttpAsyncRequestProducer.java +++ b/rt/transports/http-hc5/src/main/java/org/apache/cxf/transport/http/asyncclient/hc5/CXFHttpAsyncRequestProducer.java @@ -94,7 +94,24 @@ private void resetRequest() { @Override public int available() { - return 0; + if (content != null) { + final ByteBuffer b = buffer; + if (b != null && b.hasRemaining()) { + return b.remaining(); + } + final InputStream in = fis; + if (in != null) { + try { + return in.available(); + } catch (final IOException ex) { + /* Nothing to do */ + } + } + } else if (buf != null && buf.hasData()) { + return buf.length(); /* returns remaining */ + } + + return 0; /* no more data */ } @Override From 2cbf7e0c03322eb66917ae7ca166ce18265ec862 Mon Sep 17 00:00:00 2001 From: Andriy Redko Date: Mon, 29 Jun 2026 08:13:45 -0400 Subject: [PATCH 2/2] Address code review comments --- .../hc5/CXFHttpAsyncRequestProducer.java | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/rt/transports/http-hc5/src/main/java/org/apache/cxf/transport/http/asyncclient/hc5/CXFHttpAsyncRequestProducer.java b/rt/transports/http-hc5/src/main/java/org/apache/cxf/transport/http/asyncclient/hc5/CXFHttpAsyncRequestProducer.java index 44de7d27d4e..83eed5276e9 100644 --- a/rt/transports/http-hc5/src/main/java/org/apache/cxf/transport/http/asyncclient/hc5/CXFHttpAsyncRequestProducer.java +++ b/rt/transports/http-hc5/src/main/java/org/apache/cxf/transport/http/asyncclient/hc5/CXFHttpAsyncRequestProducer.java @@ -94,24 +94,7 @@ private void resetRequest() { @Override public int available() { - if (content != null) { - final ByteBuffer b = buffer; - if (b != null && b.hasRemaining()) { - return b.remaining(); - } - final InputStream in = fis; - if (in != null) { - try { - return in.available(); - } catch (final IOException ex) { - /* Nothing to do */ - } - } - } else if (buf != null && buf.hasData()) { - return buf.length(); /* returns remaining */ - } - - return 0; /* no more data */ + return Integer.MAX_VALUE; } @Override