--- loncom/lonnet/perl/lonrep.pm	2005/04/07 06:56:24	1.9
+++ loncom/lonnet/perl/lonrep.pm	2007/01/29 22:07:12	1.12
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Replication Manager
 #
-# $Id: lonrep.pm,v 1.9 2005/04/07 06:56:24 albertel Exp $
+# $Id: lonrep.pm,v 1.12 2007/01/29 22:07:12 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -34,6 +34,20 @@ use Apache::lonnet;
 use Apache::File();
 use CGI::Cookie();
 
+sub update_filename {
+    my ($r,$filename) = @_;
+    my $oldfile = $r->filename($filename);
+    if ($ENV{'MOD_PERL_API_VERSION'} == 2
+	&& -e $filename) {
+	require APR::Finfo;
+	require APR::Const;
+	$r->finfo(APR::Finfo::stat($filename, 
+				   &APR::Const::FINFO_NORM(),
+				   $r->pool));
+    }
+    return $oldfile;
+}
+
 sub handler {
     my $r = shift;
     if (-e $r->finfo) {
@@ -43,17 +57,18 @@ sub handler {
       if ($filename=~/\/$/) { return OK; }
       if (-e "$filename.in.transfer") {
 	sleep 10;
-        $r->filename($filename);
-        if (-e $r->finfo) {
-	   return OK;
+        if (-e $filename) {
+	    &update_filename($r,$filename);
+	    return OK;
         } else {
-	   $r->log_reason("Waiting for file transfer timed out",$filename);
-	   return HTTP_SERVICE_UNAVAILABLE;
+	    $r->log_reason("Waiting for file transfer timed out",$filename);
+	    return HTTP_SERVICE_UNAVAILABLE;
         }
       } else {
           my $response=Apache::lonnet::repcopy($filename);
-          if ($response eq 'ok') {
-	      $r->filename($filename);
+          if ($response eq 'ok' && -e $filename) {
+	      $r->path_info('');
+	      &update_filename($r,$filename);
               return OK;
           }
           my %cookies=CGI::Cookie->parse($r->header_in('Cookie'));