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

albertel lon-capa-cvs-allow@mail.lon-capa.org
Mon, 25 Jun 2007 18:12:26 -0000


albertel		Mon Jun 25 14:12:26 2007 EDT

  Modified files:              
    /loncom/lonnet/perl	lonnet.pm 
  Log:
  - fall back to yesterday's cached info if dns is failing
  
  
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.893 loncom/lonnet/perl/lonnet.pm:1.894
--- loncom/lonnet/perl/lonnet.pm:1.893	Thu Jun 21 20:11:04 2007
+++ loncom/lonnet/perl/lonnet.pm	Mon Jun 25 14:12:24 2007
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # TCP networking package
 #
-# $Id: lonnet.pm,v 1.893 2007/06/22 00:11:04 albertel Exp $
+# $Id: lonnet.pm,v 1.894 2007/06/25 18:12:24 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -8009,6 +8009,7 @@
     
     sub get_iphost {
 	my ($ignore_cache) = @_;
+
 	if (!$ignore_cache) {
 	    if (%iphost) {
 		return %iphost;
@@ -8022,16 +8023,31 @@
 		return %iphost;
 	    }
 	}
+
+	# get yesterday's info for fallback
+	my %old_name_to_ip;
+	my ($ip_info,$cached)=
+	    &Apache::lonnet::is_cached_new('iphost','iphost');
+	if ($cached) {
+	    %old_name_to_ip = %{$ip_info->[1]};
+	}
+
 	my %name_to_host = &all_names();
 	foreach my $name (keys(%name_to_host)) {
 	    my $ip;
 	    if (!exists($name_to_ip{$name})) {
 		$ip = gethostbyname($name);
 		if (!$ip || length($ip) ne 4) {
-		    &logthis("Skipping name $name no IP found");
-		    next;
+		    if (defined($old_name_to_ip{$name})) {
+			$ip = $old_name_to_ip{$name};
+			&logthis("Can't find $name defaulting to old $ip");
+		    } else {
+			&logthis("Name $name no IP found");
+			next;
+		    }
+		} else {
+		    $ip=inet_ntoa($ip);
 		}
-		$ip=inet_ntoa($ip);
 		$name_to_ip{$name} = $ip;
 	    } else {
 		$ip = $name_to_ip{$name};
@@ -8043,7 +8059,7 @@
 	}
 	&Apache::lonnet::do_cache_new('iphost','iphost',
 				      [\%iphost,\%name_to_ip,\%lonid_to_ip],
-				      24*60*60);
+				      48*60*60);
 
 	return %iphost;
     }