ensure feed reader does not leak connections
authorEugene Petrenko <eugene.petrenko@gmail.com>
Mon, 15 Aug 2011 16:15:10 +0000 (20:15 +0400)
committerEugene Petrenko <eugene.petrenko@gmail.com>
Mon, 15 Aug 2011 16:15:10 +0000 (20:15 +0400)
nuget-server/src/jetbrains/buildServer/nuget/server/feed/reader/impl/NuGetFeedReaderImpl.java
nuget-server/src/jetbrains/buildServer/nuget/server/feed/reader/impl/UrlResolverImpl.java

index 55e795c65b8b6ec79938ab74ef0fe1bdb537570d..4f623601dce3e3d42bb217b54399eef361ad742a 100644 (file)
@@ -18,14 +18,13 @@ package jetbrains.buildServer.nuget.server.feed.reader.impl;
 \r
 import com.intellij.openapi.diagnostic.Logger;\r
 import com.intellij.openapi.util.Pair;\r
-import jetbrains.buildServer.nuget.server.feed.reader.*;\r
+import jetbrains.buildServer.nuget.server.feed.reader.FeedPackage;\r
+import jetbrains.buildServer.nuget.server.feed.reader.NuGetFeedReader;\r
 import jetbrains.buildServer.util.FileUtil;\r
 import jetbrains.buildServer.util.XmlUtil;\r
-import org.apache.http.HttpHeaders;\r
-import org.apache.http.HttpResponse;\r
-import org.apache.http.HttpStatus;\r
-import org.apache.http.StatusLine;\r
+import org.apache.http.*;\r
 import org.apache.http.client.methods.HttpGet;\r
+import org.apache.http.util.EntityUtils;\r
 import org.jdom.Element;\r
 import org.jdom.JDOMException;\r
 import org.jetbrains.annotations.NotNull;\r
@@ -72,7 +71,11 @@ public class NuGetFeedReaderImpl implements NuGetFeedReader {
     LOG.debug("Query for packages: " + get.getURI());\r
 \r
     final HttpResponse execute = myClient.execute(get);\r
-    return myParser.readPackages(toDocument(execute));\r
+    try {\r
+      return myParser.readPackages(toDocument(execute));\r
+    } finally {\r
+      get.abort();\r
+    }\r
   }\r
 \r
   public void downloadPackage(@NotNull FeedPackage pkg, @NotNull File file) throws IOException {\r
@@ -98,12 +101,15 @@ public class NuGetFeedReaderImpl implements NuGetFeedReader {
   }\r
 \r
   private Element toDocument(HttpResponse response) throws IOException {\r
+    final HttpEntity entity = response.getEntity();\r
     try {\r
-      return FileUtil.parseDocument(response.getEntity().getContent(), false);\r
+      return FileUtil.parseDocument(entity.getContent(), false);\r
     } catch (final JDOMException e) {\r
       throw new IOException("Failed to parse xml document. " + e.getMessage()) {{\r
         initCause(e);\r
       }};\r
+    } finally {\r
+      EntityUtils.consume(entity);\r
     }\r
   }\r
 }\r
index 256113c41ca0c25ec1a166c9c5a0a620af5956ec..e9d4ff85028f2bc5f8e2b743443946eb8bd1bb3c 100644 (file)
@@ -28,6 +28,7 @@ import org.apache.http.client.params.ClientPNames;
 import org.apache.http.impl.client.DefaultRedirectStrategy;\r
 import org.apache.http.protocol.BasicHttpContext;\r
 import org.apache.http.protocol.HttpContext;\r
+import org.apache.http.util.EntityUtils;\r
 import org.jetbrains.annotations.NotNull;\r
 import org.jetbrains.annotations.Nullable;\r
 \r
@@ -70,6 +71,7 @@ public class UrlResolverImpl implements UrlResolver {
       if (redirected != null) {\r
         LOG.debug("Redirected to " + redirected);\r
         feedUrl = redirected;\r
+        EntityUtils.consume(execute.getEntity());\r
         continue;\r
       }\r
 \r