[LON-CAPA-cvs] cvs: loncom /interface lonsearchcat.pm

albertel lon-capa-cvs@mail.lon-capa.org
Wed, 02 Feb 2005 21:08:24 -0000


albertel		Wed Feb  2 16:08:24 2005 EDT

  Modified files:              
    /loncom/interface	lonsearchcat.pm 
  Log:
  - setect aborted connections
  - searching could go into an infinte loop
  
  
Index: loncom/interface/lonsearchcat.pm
diff -u loncom/interface/lonsearchcat.pm:1.235 loncom/interface/lonsearchcat.pm:1.236
--- loncom/interface/lonsearchcat.pm:1.235	Fri Dec 17 16:44:19 2004
+++ loncom/interface/lonsearchcat.pm	Wed Feb  2 16:08:23 2005
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Search Catalog
 #
-# $Id: lonsearchcat.pm,v 1.235 2004/12/17 21:44:19 albertel Exp $
+# $Id: lonsearchcat.pm,v 1.236 2005/02/02 21:08:23 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -445,6 +445,7 @@
 {   # Scope the course search to avoid global variables
 #
 # Variables For course search
+my %alreadyseen;
 my %hash;
 my $totalfound;
 
@@ -463,6 +464,7 @@
     my $pretty_search_string = '<b>'.$ENV{'form.courseexp'}.'</b>';
     my $search_string = $ENV{'form.courseexp'};
     my @New_Words;
+    undef(%alreadyseen);
     if ($ENV{'form.crsrelated'}) {
         ($search_string,@New_Words) = &related_version($ENV{'form.courseexp'});
         if (@New_Words) {
@@ -581,6 +583,8 @@
 
 sub checkonthis {
     my ($r,$id,$url,$level,$title,$fulltext,$symb,@allwords)=@_;
+    $alreadyseen{$id}=1;
+    if (&Apache::loncommon::connection_aborted($r)) { return; }
     $r->rflush();
     
     my $result=$title.' ';
@@ -621,7 +625,7 @@
 # Check also the dependencies of this one
     my $dependencies=
                 &Apache::lonnet::metadata($url,'dependencies');
-    foreach (split(/\,/,$dependencies)) {
+    foreach (split(/\,/,$dependencies) && (!$alreadyseen{$id})) {
        if (($_=~/^\/res\//)) {
           &checkonthis($r,$id,$_,$level+1,'',$fulltext,undef,@allwords);
        }