Author: maartenc
Date: Wed Oct  1 14:21:11 2008
New Revision: 700932

URL: http://svn.apache.org/viewvc?rev=700932&view=rev
Log:
FIX: HttpClientHandler hanging in certain cases (IVY-930) (thanks to Scott 
Hebert)

Modified:
    ant/ivy/core/trunk/CHANGES.txt
    ant/ivy/core/trunk/src/java/org/apache/ivy/util/url/HttpClientHandler.java

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=700932&r1=700931&r2=700932&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Wed Oct  1 14:21:11 2008
@@ -34,6 +34,7 @@
        Tobias Himstedt
        Ben Hale
        Peter Hayes
+       Scott Hebert
        Matt Inger
        Anders Janmyr
        Christer Jonsson
@@ -96,6 +97,7 @@
 - FIX: StackOverflow when using ivy:settings with "ivy.instance" as id 
(IVY-924)
 - FIX: Maven Pom reader doesn't handle optional dependencies correctly in some 
instances (IVY-926) (thanks to Phil Messenger)
 - FIX: ivy:settings doesn't work if id is a property (IVY-925)
+- FIX: HttpClientHandler hanging in certain cases (IVY-930) (thanks to Scott 
Hebert)
 
    2.0.0-rc1
 =====================================

Modified: 
ant/ivy/core/trunk/src/java/org/apache/ivy/util/url/HttpClientHandler.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/util/url/HttpClientHandler.java?rev=700932&r1=700931&r2=700932&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/util/url/HttpClientHandler.java 
(original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/util/url/HttpClientHandler.java 
Wed Oct  1 14:21:11 2008
@@ -94,6 +94,7 @@
     public InputStream openStream(URL url) throws IOException {
         GetMethod get = doGet(url, 0);
         if (!checkStatusCode(url, get)) {
+            get.releaseConnection();
             throw new IOException(
                     "The HTTP response code for " + url + " did not indicate a 
success."
                             + " See log for more detail.");
@@ -103,15 +104,18 @@
 
     public void download(URL src, File dest, CopyProgressListener l) throws 
IOException {
         GetMethod get = doGet(src, 0);
-        // We can only figure the content we got is want we want if the status 
is success.
-        if (!checkStatusCode(src, get)) {
-            throw new IOException(
-                    "The HTTP response code for " + src + " did not indicate a 
success."
-                            + " See log for more detail.");
+        try {
+            // We can only figure the content we got is want we want if the 
status is success.
+            if (!checkStatusCode(src, get)) {
+                throw new IOException(
+                        "The HTTP response code for " + src + " did not 
indicate a success."
+                                + " See log for more detail.");
+            }
+            FileUtil.copy(get.getResponseBodyAsStream(), dest, l);
+            dest.setLastModified(getLastModified(get));
+        } finally {
+            get.releaseConnection();
         }
-        FileUtil.copy(get.getResponseBodyAsStream(), dest, l);
-        dest.setLastModified(getLastModified(get));
-        get.releaseConnection();
     }
 
     public void upload(File src, URL dest, CopyProgressListener l) throws 
IOException {
@@ -133,6 +137,7 @@
                     /* ignored */
                 }
             }
+            put.releaseConnection();
         }
     }
 


Reply via email to