--- loncom/lonnet/perl/lonnet.pm 2002/05/13 09:32:56 1.219 +++ loncom/lonnet/perl/lonnet.pm 2002/05/18 19:59:07 1.228 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.219 2002/05/13 09:32:56 albertel Exp $ +# $Id: lonnet.pm,v 1.228 2002/05/18 19:59:07 harris41 Exp $ # # Copyright Michigan State University Board of Trustees # @@ -77,7 +77,7 @@ use Apache::File; use LWP::UserAgent(); use HTTP::Headers; use vars -qw(%perlvar %hostname %homecache %hostip %spareid %hostdom +qw(%perlvar %hostname %homecache %badhomecache %hostip %spareid %hostdom %libserv %pr %prp %metacache %packagetab %courselogs %accesshash $processmarker $dumpcount %coursedombuf %coursehombuf %courseresdatacache); @@ -482,18 +482,23 @@ sub authenticate { sub homeserver { my ($uname,$udom)=@_; - my $index="$uname:$udom"; - if ($homecache{$index}) { return "$homecache{$index}"; } - + if ($homecache{$index}) { + return "$homecache{$index}"; + } my $tryserver; foreach $tryserver (keys %libserv) { + next if (exists($badhomecache{$index}->{$tryserver})); if ($hostdom{$tryserver} eq $udom) { my $answer=reply("home:$udom:$uname",$tryserver); if ($answer eq 'found') { - $homecache{$index}=$tryserver; + $homecache{$index}=$tryserver; return $tryserver; - } + } else { + $badhomecache{$index}->{$tryserver}=1; + } + } else { + $badhomecache{$index}->{$tryserver}=1; } } return 'no_host'; @@ -2758,6 +2763,7 @@ sub hreflocation { unless (($file=~/^http:\/\//i) || ($file=~/^\//)) { my $finalpath=filelocation($dir,$file); $finalpath=~s/^\/home\/httpd\/html//; + $finalpath=~s-/home/(\w+)/public_html/-/~$1/-; return $finalpath; } else { return $file; @@ -2799,12 +2805,10 @@ sub goodbye { } BEGIN { -# ------------------------------------------- Read access.conf and loncapa.conf -# (eventually access.conf will become deprecated) +# ----------------------------------- Read loncapa.conf and loncapa_apache.conf unless ($readit) { - { - my $config=Apache::File->new("/etc/httpd/conf/access.conf"); + my $config=Apache::File->new("/etc/httpd/conf/loncapa.conf"); while (my $configline=<$config>) { if ($configline =~ /^[^\#]*PerlSetVar/) { @@ -2815,7 +2819,7 @@ BEGIN { } } { - my $config=Apache::File->new("/etc/httpd/conf/loncapa.conf"); + my $config=Apache::File->new("/etc/httpd/conf/loncapa_apache.conf"); while (my $configline=<$config>) { if ($configline =~ /^[^\#]*PerlSetVar/) { @@ -3287,7 +3291,7 @@ replicates and subscribes to the file =item * filelocation($dir,$file) : returns file system location of a file based on URI; -meant to be "fairly clean" absolute reference +meant to be "fairly clean" absolute reference, $dir is a directory that relative $file lookups are to looked in ($dir of /a/dir and a file of ../bob will become /a/bob) =item *