Try to make sure the connection is a consistent (re-usable) state prior to closing the response
Project: http://git-wip-us.apache.org/repos/asf/maven-wagon/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-wagon/commit/70e42612 Tree: http://git-wip-us.apache.org/repos/asf/maven-wagon/tree/70e42612 Diff: http://git-wip-us.apache.org/repos/asf/maven-wagon/diff/70e42612 Branch: refs/heads/master Commit: 70e4261277544dcc5fc40b9521bcad928dcc9607 Parents: 008accb Author: Oleg Kalnichevski <ol...@apache.org> Authored: Tue Sep 24 15:12:50 2013 +0200 Committer: Oleg Kalnichevski <ol...@apache.org> Committed: Tue Sep 24 15:12:50 2013 +0200 ---------------------------------------------------------------------- .../providers/http/AbstractHttpClientWagon.java | 17 ++++++++++++----- .../maven/wagon/providers/http/HttpWagon.java | 14 +++++++++++--- 2 files changed, 23 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/70e42612/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java ---------------------------------------------------------------------- diff --git a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java index 0fd7ada..8df1404 100755 --- a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java +++ b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java @@ -78,6 +78,7 @@ import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.message.BasicHeader; import org.apache.http.protocol.HTTP; +import org.apache.http.util.EntityUtils; import org.apache.maven.wagon.InputData; import org.apache.maven.wagon.OutputData; import org.apache.maven.wagon.PathUtils; @@ -561,6 +562,8 @@ public abstract class AbstractHttpClientWagon } firePutCompleted(resource, source); + + EntityUtils.consume(response.getEntity()); } finally { @@ -607,13 +610,15 @@ public abstract class AbstractHttpClientWagon try { int statusCode = response.getStatusLine().getStatusCode(); String reasonPhrase = ", ReasonPhrase: " + response.getStatusLine().getReasonPhrase() + "."; + boolean result; switch ( statusCode ) { case HttpStatus.SC_OK: - return true; - + result = true; + break; case HttpStatus.SC_NOT_MODIFIED: - return true; + result = true; + break; case HttpStatus.SC_FORBIDDEN: throw new AuthorizationException( "Access denied to: " + url + reasonPhrase ); @@ -624,14 +629,16 @@ public abstract class AbstractHttpClientWagon throw new AuthorizationException( "Not authorized by proxy " + reasonPhrase ); case HttpStatus.SC_NOT_FOUND: - return false; - + result = false; + break; //add more entries here default: throw new TransferFailedException( "Failed to transfer file: " + url + ". Return code is: " + statusCode + reasonPhrase ); } + EntityUtils.consume(response.getEntity()); + return result; } finally { http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/70e42612/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java ---------------------------------------------------------------------- diff --git a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java index c06f2cc..fa68341 100755 --- a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java +++ b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java @@ -21,8 +21,10 @@ package org.apache.maven.wagon.providers.http; import java.io.IOException; import java.io.InputStream; +import java.util.Collections; import java.util.List; +import org.apache.http.HttpEntity; import org.apache.http.HttpException; import org.apache.http.HttpStatus; import org.apache.http.client.methods.CloseableHttpResponse; @@ -81,10 +83,16 @@ public class HttpWagon throw new TransferFailedException( "Failed to transfer file: " + url + ". Return code is: " + statusCode ); } + HttpEntity entity = response.getEntity(); + if ( entity != null ) + { + return HtmlFileListParser.parseFileList( url, entity.getContent() ); + } + else + { + return Collections.emptyList(); + } - InputStream is = response.getEntity().getContent(); - - return HtmlFileListParser.parseFileList( url, is ); } finally { response.close(); }