didn't properly delete lockfile on failed files - preventing retries
[Digitiz.git] / digitiz-xfer
index e5b79d3..c168c93 100755 (executable)
@@ -15,6 +15,7 @@ use subs qw( daemonize archive failed movefile docopy logsuccess logfail
 use Fcntl ':flock';
 use POSIX 'setsid';
 use IO::File;
+use File::Basename;
 use Date::Format;
 use Mail::Mailer;
 use Net::FTP;
@@ -89,6 +90,8 @@ while (1) {
       if ( $retrytime && (time-$retrytime)/3600 >= 48 ) {
         logfail($file, "still can't transfer $file after 48 hours");
         failed($file);
+        unlink "$lock_directory/$file";
+        exit;
       }
       #next if ($retry-1) > ((time-$retrytime)/3600);
       exit if ($retry-1) > ((time-$retrytime)/3600);
@@ -223,12 +226,17 @@ sub docopy { #copies a file to the remote host
   _logmsg("copying $source_directory/$file to ".
           "$destination_host:$dest_file with $protocol");
 
+  #so close
+  if ( $protocol eq 'ftp' ) { #so close
+    $xfer->cwd(dirname($dest_file));
+    $dest_file = basename($dest_file);
+  }
   $xfer->put("$source_directory/$file", $dest_file);
 
   my $localsize = -s "$source_directory/$file";
   my $remotesize = $xfer->size($dest_file);
 
-  if ( $localsize == $remotesize ) {
+  if ( $localsize && ( $localsize == $remotesize ) ) {
     logsuccess($file);
     archive($file);
   } else {