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 bd7238a10ef3cca49e8c27d6eedd7ad9d3c07887..f803f3cd866f9e5e006c098714c9d8a0411d5ff0 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()