[LON-CAPA-cvs] cvs: loncom(version_1_2_X) /lonnet/perl lonnet.pm

albertel lon-capa-cvs@mail.lon-capa.org
Wed, 15 Sep 2004 20:41:07 -0000


albertel		Wed Sep 15 16:41:07 2004 EDT

  Modified files:              (Branch: version_1_2_X)
    /loncom/lonnet/perl	lonnet.pm 
  Log:
  - backport 1.539 (symbread improvement)
  
  
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.523.2.1 loncom/lonnet/perl/lonnet.pm:1.523.2.2
--- loncom/lonnet/perl/lonnet.pm:1.523.2.1	Wed Aug 25 12:05:10 2004
+++ loncom/lonnet/perl/lonnet.pm	Wed Sep 15 16:41:07 2004
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # TCP networking package
 #
-# $Id: lonnet.pm,v 1.523.2.1 2004/08/25 16:05:10 albertel Exp $
+# $Id: lonnet.pm,v 1.523.2.2 2004/09/15 20:41:07 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -50,7 +50,7 @@
 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
@@ -3996,11 +3996,14 @@
 
 	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 '<br>'.$space.' - '.$qualifier.' - '.$spacequalifierrest;
 
 # ----------------------------------------------------- Cascading lookup scheme
-	    if (!$symbparm) { $symbparm=&symbread(); }
 	    my $symbp=$symbparm;
 	    my $mapp=(&decode_symb($symbp))[0];
 
@@ -4011,11 +4014,11 @@
 		($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;
@@ -4053,7 +4056,7 @@
 				 $uname." at ".$udom.": ".
 				 $tmp."</font>");
 		    } elsif ($tmp=~/error: 2 /) {
-                        &EXT_cache_set($udom,$uname);
+			&EXT_cache_set($udom,$uname);
 		    } elsif ($tmp =~ /^(con_lost|no_such_host)/) {
 			return $tmp;
 		    }
@@ -4063,10 +4066,10 @@
 # -------------------------------------------------------- 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
@@ -4564,14 +4567,23 @@
 
 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;
@@ -4592,6 +4604,7 @@
            unless ($syval=~/\_\d+$/) {
 	       unless ($ENV{'form.request.prefix'}=~/\.(\d+)\_$/) {
                   &appenv('request.ambiguous' => $thisfn);
+		  $ENV{'request.symbread.cached'}='';
                   return '';
                }    
                $syval.=$1;
@@ -4639,10 +4652,12 @@
            }
         }
         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 '';
 }