--- 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 *