From 8f6f1f3abae615a22068d1a240354a8c8503e586 Mon Sep 17 00:00:00 2001
From: kaloyane <kaloyane>
Date: Tue, 31 May 2011 07:18:43 +0000
Subject: [PATCH] minor FIXME resolved: HierarchicalContent is also closed when
 an I/O error occurs

SVN: 21515
---
 .../server/ftp/resolver/FtpFileImpl.java      | 21 ++++++++++++-------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/resolver/FtpFileImpl.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/resolver/FtpFileImpl.java
index bd7238a10ef..f803f3cd866 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/resolver/FtpFileImpl.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/resolver/FtpFileImpl.java
@@ -68,17 +68,22 @@ public class FtpFileImpl extends AbstractFtpFile
     public InputStream createInputStream(long offset) throws IOException
     {
         IHierarchicalContent content = createHierarchicalContent();
-        IHierarchicalContentNode contentNode = getContentNodeForThisFile(content);
-
-        InputStream result =
-                HierarchicalContentUtils.getInputStreamAutoClosingContent(contentNode, content);
+        try
+        {
+            IHierarchicalContentNode contentNode = getContentNodeForThisFile(content);
+            InputStream result =
+                    HierarchicalContentUtils.getInputStreamAutoClosingContent(contentNode, content);
 
-        if (offset > 0)
+            if (offset > 0)
+            {
+                result.skip(offset);
+            }
+            return result;
+        } catch (IOException ioex)
         {
-            result.skip(offset);
+            content.close();
+            return null;
         }
-        return result;
-        // FIXME content is not closed if exception occurs
     }
 
     public long getLastModified()
-- 
GitLab