[LON-CAPA-cvs] cvs: loncom / lond

albertel lon-capa-cvs@mail.lon-capa.org
Fri, 03 Oct 2003 15:11:03 -0000


albertel		Fri Oct  3 11:11:03 2003 EDT

  Modified files:              
    /loncom	lond 
  Log:
  - if we fail to fetch an update to the file, don't blow away the old one
    (this was the BUG that blew away that one default.sequence that Matthew
     ended up restoring from data.)
  
  
Index: loncom/lond
diff -u loncom/lond:1.150 loncom/lond:1.151
--- loncom/lond:1.150	Tue Sep 30 06:16:06 2003
+++ loncom/lond	Fri Oct  3 11:11:03 2003
@@ -2,7 +2,7 @@
 # The LearningOnline Network
 # lond "LON Daemon" Server (port "LOND" 5663)
 #
-# $Id: lond,v 1.150 2003/09/30 10:16:06 foxr Exp $
+# $Id: lond,v 1.151 2003/10/03 15:11:03 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -60,6 +60,11 @@
 # 09/08/2003 Ron Fox:  Told lond to take care of change logging so we
 #      don't have to remember it:
 # $Log: lond,v $
+# Revision 1.151  2003/10/03 15:11:03  albertel
+# - if we fail to fetch an update to the file, don't blow away the old one
+#   (this was the BUG that blew away that one default.sequence that Matthew
+#    ended up restoring from data.)
+#
 # Revision 1.150  2003/09/30 10:16:06  foxr
 # Added invocation of apachereload in ReloadApache sub.
 # This completes the addtion of the reinit functionality.
@@ -129,7 +134,7 @@
 my $status='';
 my $lastlog='';
 
-my $VERSION='$Revision: 1.150 $'; #' stupid emacs
+my $VERSION='$Revision: 1.151 $'; #' stupid emacs
 my $remoteVERSION;
 my $currenthostid;
 my $currentdomainid;
@@ -1410,33 +1415,39 @@
                        }
 # -------------------------------------- fetch a user file from a remote server
                    } elsif ($userinput =~ /^fetchuserfile/) {
-                      my ($cmd,$fname)=split(/:/,$userinput);
-		      my ($udom,$uname,$ufile)=split(/\//,$fname);
-                      my $udir=propath($udom,$uname).'/userfiles';
-                      unless (-e $udir) { mkdir($udir,0770); }
+		       my ($cmd,$fname)=split(/:/,$userinput);
+		       my ($udom,$uname,$ufile)=split(/\//,$fname);
+		       my $udir=propath($udom,$uname).'/userfiles';
+		       unless (-e $udir) { mkdir($udir,0770); }
                        if (-e $udir) {
-                       $ufile=~s/^[\.\~]+//;
-                       $ufile=~s/\///g;
-                       my $transname=$udir.'/'.$ufile;
-                       my $remoteurl='http://'.$clientip.'/userfiles/'.$fname;
-                             my $response;
-                              {
-                             my $ua=new LWP::UserAgent;
-                             my $request=new HTTP::Request('GET',"$remoteurl");
-                             $response=$ua->request($request,$transname);
-			      }
-                             if ($response->is_error()) {
-				 unlink($transname);
-                                 my $message=$response->status_line;
-                                 &logthis(
-                                  "LWP GET: $message for $fname ($remoteurl)");
-				 print $client "failed\n";
-                             } else {
-                                 print $client "ok\n";
-                             }
-                     } else {
-                       print $client "not_home\n";
-                     } 
+			   $ufile=~s/^[\.\~]+//;
+			   $ufile=~s/\///g;
+			   my $destname=$udir.'/'.$ufile;
+			   my $transname=$udir.'/'.$ufile.'.in.transit';
+			   my $remoteurl='http://'.$clientip.'/userfiles/'.$fname;
+			   my $response;
+			   {
+			       my $ua=new LWP::UserAgent;
+			       my $request=new HTTP::Request('GET',"$remoteurl");
+			       $response=$ua->request($request,$transname);
+			   }
+			   if ($response->is_error()) {
+			       unlink($transname);
+			       my $message=$response->status_line;
+			       &logthis("LWP GET: $message for $fname ($remoteurl)");
+			       print $client "failed\n";
+			   } else {
+			       if (!rename($transname,$destname)) {
+				   &logthis("Unable to move $transname to $destname");
+				   unlink($transname);
+				   print $client "failed\n";
+			       } else {
+				   print $client "ok\n";
+			       }
+			   }
+		       } else {
+			   print $client "not_home\n";
+		       }
 # ------------------------------------------ authenticate access to a user file
                    } elsif ($userinput =~ /^tokenauthuserfile/) {
                        my ($cmd,$fname,$session)=split(/:/,$userinput);