plug resource leak as suggested by Mike Phillips in BZ issue 66001
diff --git a/WHATSNEW b/WHATSNEW
index 3c207a8..0f69bd2 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -4,11 +4,11 @@
 Changes that could break older environments:
 --------------------------------------------
 
-* <get> has a new attribute authenticateOnRedirect that can be used to
-  prevent Ant from sending the configured credentials when following a
-  redirect. It is false by default, which means builds that rely on
-  credentials being used on the redirected URI may break.
-  Github Pull Request #173
+ * <get> has a new attribute authenticateOnRedirect that can be used to
+   prevent Ant from sending the configured credentials when following a
+   redirect. It is false by default, which means builds that rely on
+   credentials being used on the redirected URI may break.
+   Github Pull Request #173
 
 Fixed bugs:
 -----------
@@ -18,6 +18,10 @@
    the shorter alias names.
    Bugzilla Report 65539
 
+ * <scp> may leak connections when trying to preserve the las modified
+   timestamps of files transferred recursively from a server.
+   Bugzilla Report 66001
+
 Other changes:
 --------------
 
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpFromMessage.java b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpFromMessage.java
index bce3f78..96be344 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpFromMessage.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpFromMessage.java
@@ -310,12 +310,16 @@
     private void setLastModified(final File localFile) throws JSchException {
         SftpATTRS fileAttributes = null;
         final ChannelSftp channel = openSftpChannel();
-        channel.connect();
         try {
-            fileAttributes = channel.lstat(remoteDir(remoteFile)
-                                           + localFile.getName());
-        } catch (final SftpException e) {
-            throw new JSchException("failed to stat remote file", e);
+            channel.connect();
+            try {
+                fileAttributes = channel.lstat(remoteDir(remoteFile)
+                                               + localFile.getName());
+            } catch (final SftpException e) {
+                throw new JSchException("failed to stat remote file", e);
+            }
+        } finally {
+            channel.disconnect();
         }
         FileUtils.getFileUtils().setFileLastModified(localFile,
                                                      ((long) fileAttributes