52eea9
diff --git a/src/FileCopy.cc b/src/FileCopy.cc
52eea9
index 18426e58..e0d25d8c 100644
52eea9
--- a/src/FileCopy.cc
52eea9
+++ b/src/FileCopy.cc
52eea9
@@ -786,21 +786,23 @@ int FileCopyPeerFA::Do()
52eea9
       return m;
52eea9
    }
52eea9
 
52eea9
-   if((want_size && size==NO_SIZE_YET && (mode==PUT || !start_transfer))
52eea9
-   || (want_date && date==NO_DATE_YET))
52eea9
+   // if we need some info and cannot start the transfer (yet),
52eea9
+   // then use ARRAY_INFO to fetch the file information.
52eea9
+   if(((want_size && size==NO_SIZE_YET) || (want_date && date==NO_DATE_YET))
52eea9
+   && (mode==PUT || !start_transfer) && session->IsClosed())
52eea9
+   {
52eea9
+      FileInfo *fi=new FileInfo(file);
52eea9
+      if(want_size)
52eea9
+	 fi->Need(fi->SIZE);
52eea9
+      if(want_date)
52eea9
+	 fi->Need(fi->DATE);
52eea9
+      info.Empty();
52eea9
+      info.Add(fi);
52eea9
+      session->GetInfoArray(&info;;
52eea9
+      m=MOVED;
52eea9
+   }
52eea9
+   if(session->OpenMode()==FA::ARRAY_INFO)
52eea9
    {
52eea9
-      if(session->IsClosed())
52eea9
-      {
52eea9
-	 FileInfo *fi=new FileInfo(file);
52eea9
-	 if(want_size)
52eea9
-	    fi->Need(fi->SIZE);
52eea9
-	 if(want_date)
52eea9
-	    fi->Need(fi->DATE);
52eea9
-	 info.Empty();
52eea9
-	 info.Add(fi);
52eea9
-	 session->GetInfoArray(&info;;
52eea9
-	 m=MOVED;
52eea9
-      }
52eea9
       res=session->Done();
52eea9
       if(res==FA::IN_PROGRESS)
52eea9
 	 return m;