You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2023/09/05 16:05:50 UTC
[cxf] 02/04: TransportURIResolver replaces the InputStream, but doesn't close the original.
This is an automated email from the ASF dual-hosted git repository.
dkulp pushed a commit to branch 3.6.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
commit 5e99df45a0ca001c9606b86cf340c75760f3a220
Author: Daniel Kulp <da...@kulp.com>
AuthorDate: Tue Sep 5 08:44:50 2023 -0400
TransportURIResolver replaces the InputStream, but doesn't close the original.
(cherry picked from commit 86cb53f39b3f14fee17a601a70cfcf04a2bbc40f)
---
.../java/org/apache/cxf/transport/TransportURIResolver.java | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/core/src/main/java/org/apache/cxf/transport/TransportURIResolver.java b/core/src/main/java/org/apache/cxf/transport/TransportURIResolver.java
index 4c1446ef04..752b1f0f8c 100644
--- a/core/src/main/java/org/apache/cxf/transport/TransportURIResolver.java
+++ b/core/src/main/java/org/apache/cxf/transport/TransportURIResolver.java
@@ -112,7 +112,7 @@ public class TransportURIResolver extends ExtendedURIResolver {
// set the endpointInfo name which could be used for configuration
info.setName(new QName("http://cxf.apache.org", "TransportURIResolver"));
info.setAddress(base.toString());
- final Conduit c = ci.getConduit(info, bus);
+ Conduit c = ci.getConduit(info, bus);
Message message = new MessageImpl();
Exchange exch = new ExchangeImpl();
exch.put(Bus.class, bus);
@@ -123,9 +123,8 @@ public class TransportURIResolver extends ExtendedURIResolver {
public void onMessage(Message message) {
LoadingByteArrayOutputStream bout = new LoadingByteArrayOutputStream();
try {
- IOUtils.copy(message.getContent(InputStream.class), bout);
+ IOUtils.copyAndCloseInput(message.getContent(InputStream.class), bout);
message.getExchange().put(InputStream.class, bout.createInputStream());
- c.close(message);
} catch (IOException e) {
//ignore
}
@@ -133,6 +132,12 @@ public class TransportURIResolver extends ExtendedURIResolver {
});
c.prepare(message);
c.close(message);
+ if (exch.getInMessage() != null) {
+ c.close(exch.getInMessage());
+ }
+ if (exch.getInFaultMessage() != null) {
+ c.close(exch.getInFaultMessage());
+ }
c.close();
InputStream ins = exch.get(InputStream.class);
resourceOpened.add(ins);
@@ -150,6 +155,7 @@ public class TransportURIResolver extends ExtendedURIResolver {
} catch (Exception e) {
//ignore
LOG.log(Level.FINEST, "Conduit initiator could not resolve " + baseUri + " " + curUri, e);
+ e.printStackTrace();
}
}
if (is == null