[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);