--- loncom/lonnet/perl/lonnet.pm 2004/09/02 18:01:52 1.538 +++ loncom/lonnet/perl/lonnet.pm 2004/09/02 21:23:13 1.539 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.538 2004/09/02 18:01:52 albertel Exp $ +# $Id: lonnet.pm,v 1.539 2004/09/02 21:23:13 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -50,7 +50,7 @@ use Fcntl qw(:flock); use Apache::loncoursedata; use Apache::lonlocal; use Storable qw(lock_store lock_nstore lock_retrieve freeze thaw); -use Time::HiRes(); +use Time::HiRes qw( gettimeofday tv_interval ); my $readit; =pod @@ -4026,11 +4026,14 @@ sub EXT { my $section; if (defined($courseid) && $courseid eq $ENV{'request.course.id'}) { + if (!$symbparm) { $symbparm=&symbread(); } + } + if ($symbparm && defined($courseid) && + $courseid eq $ENV{'request.course.id'}) { #print '
'.$space.' - '.$qualifier.' - '.$spacequalifierrest; # ----------------------------------------------------- Cascading lookup scheme - if (!$symbparm) { $symbparm=&symbread(); } my $symbp=$symbparm; my $mapp=(&decode_symb($symbp))[0]; @@ -4041,11 +4044,11 @@ sub EXT { ($ENV{'user.domain'} eq $udom)) { $section=$ENV{'request.course.sec'}; } else { - if (! defined($usection)) { - $section=&usection($udom,$uname,$courseid); - } else { - $section = $usection; - } + if (! defined($usection)) { + $section=&usection($udom,$uname,$courseid); + } else { + $section = $usection; + } } my $seclevel=$courseid.'.['.$section.'].'.$spacequalifierrest; @@ -4083,7 +4086,7 @@ sub EXT { $uname." at ".$udom.": ". $tmp.""); } elsif ($tmp=~/error: 2 /) { - &EXT_cache_set($udom,$uname); + &EXT_cache_set($udom,$uname); } elsif ($tmp =~ /^(con_lost|no_such_host)/) { return $tmp; } @@ -4093,10 +4096,10 @@ sub EXT { # -------------------------------------------------------- second, check course my $coursereply=&courseresdata($ENV{'course.'.$courseid.'.num'}, - $ENV{'course.'.$courseid.'.domain'}, - ($seclevelr,$seclevelm,$seclevel, - $courselevelr,$courselevelm, - $courselevel)); + $ENV{'course.'.$courseid.'.domain'}, + ($seclevelr,$seclevelm,$seclevel, + $courselevelr,$courselevelm, + $courselevel)); if (defined($coursereply)) { return $coursereply; } # ------------------------------------------------------ third, check map parms @@ -4596,14 +4599,23 @@ sub deversion { sub symbread { my ($thisfn,$donotrecurse)=@_; + if (defined($ENV{'request.symbread.cached'})) { + return $ENV{'request.symbread.cached'}; + } # no filename provided? try from environment unless ($thisfn) { - if ($ENV{'request.symb'}) { return &symbclean($ENV{'request.symb'}); } + if ($ENV{'request.symb'}) { + $ENV{'request.symbread.cached'}=&symbclean($ENV{'request.symb'}); + return $ENV{'request.symbread.cached'}; + } $thisfn=$ENV{'request.filename'}; } # is that filename actually a symb? Verify, clean, and return if ($thisfn=~/\_\_\_\d+\_\_\_(.*)$/) { - if (&symbverify($thisfn,$1)) { return &symbclean($thisfn); } + if (&symbverify($thisfn,$1)) { + $ENV{'request.symbread.cached'}=&symbclean($thisfn); + return $ENV{'request.symbread.cached'}; + } } $thisfn=declutter($thisfn); my %hash; @@ -4624,6 +4636,7 @@ sub symbread { unless ($syval=~/\_\d+$/) { unless ($ENV{'form.request.prefix'}=~/\.(\d+)\_$/) { &appenv('request.ambiguous' => $thisfn); + $ENV{'request.symbread.cached'}=''; return ''; } $syval.=$1; @@ -4671,10 +4684,12 @@ sub symbread { } } if ($syval) { - return &symbclean($syval.'___'.$thisfn); + $ENV{'request.symbread.cached'}=&symbclean($syval.'___'.$thisfn); + return $ENV{'request.symbread.cached'}; } } &appenv('request.ambiguous' => $thisfn); + $ENV{'request.symbread.cached'}=''; return ''; }