--- loncom/lond 2007/04/03 00:49:55 1.368
+++ loncom/lond 2007/06/18 22:49:52 1.375
@@ -2,7 +2,7 @@
# The LearningOnline Network
# lond "LON Daemon" Server (port "LOND" 5663)
#
-# $Id: lond,v 1.368 2007/04/03 00:49:55 albertel Exp $
+# $Id: lond,v 1.375 2007/06/18 22:49:52 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -59,7 +59,7 @@ my $DEBUG = 0; # Non zero to ena
my $status='';
my $lastlog='';
-my $VERSION='$Revision: 1.368 $'; #' stupid emacs
+my $VERSION='$Revision: 1.375 $'; #' stupid emacs
my $remoteVERSION;
my $currenthostid="default";
my $currentdomainid;
@@ -69,7 +69,6 @@ my $clientip; # IP address of client.
my $clientname; # LonCAPA name of client.
my $server;
-my $thisserver; # DNS of us.
my $keymode;
@@ -172,19 +171,16 @@ sub ResetStatistics {
# $Socket - Socket open on client.
# $initcmd - The full text of the init command.
#
-# Implicit inputs:
-# $thisserver - Our DNS name.
-#
# Returns:
# IDEA session key on success.
# undef on failure.
#
sub LocalConnection {
my ($Socket, $initcmd) = @_;
- Debug("Attempting local connection: $initcmd client: $clientip me: $thisserver");
+ Debug("Attempting local connection: $initcmd client: $clientip");
if($clientip ne "127.0.0.1") {
&logthis(' LocalConnection rejecting non local: '
- ."$clientip ne $thisserver ");
+ ."$clientip ne 127.0.0.1 ");
close $Socket;
return undef;
} else {
@@ -4619,8 +4615,12 @@ sub inst_usertypes_handler {
my ($cmd, $domain, $client) = @_;
my $res;
my $userinput = $cmd.":".$domain; # For logging purposes.
- my (%typeshash,@order);
- if (&localenroll::inst_usertypes($domain,\%typeshash,\@order) eq 'ok') {
+ my (%typeshash,@order,$result);
+ eval {
+ local($SIG{__DIE__})='DEFAULT';
+ $result=&localenroll::inst_usertypes($domain,\%typeshash,\@order);
+ };
+ if ($result eq 'ok') {
if (keys(%typeshash) > 0) {
foreach my $key (keys(%typeshash)) {
$res.=&escape($key).'='.&escape($typeshash{$key}).'&';
@@ -4903,7 +4903,7 @@ sub catchexception {
$SIG{__DIE__}='DEFAULT';
&status("Catching exception");
&logthis("CRITICAL: "
- ."ABNORMAL EXIT. Child $$ for server $thisserver died through "
+ ."ABNORMAL EXIT. Child $$ for server ".$perlvar{'lonHostID'}." died through "
."a crash with this error msg->[$error]");
&logthis('Famous last words: '.$status.' - '.$lastlog);
if ($client) { print $client "error: $error\n"; }
@@ -5044,12 +5044,12 @@ sub UpdateHosts {
# either dropped or changed hosts. Note that the re-read of the table
# will take care of new and changed hosts as connections come into being.
- #FIXME need a way to tell lonnet that it needs to reset host
- #cached host info
+ &Apache::lonnet::reset_hosts_info();
foreach my $child (keys(%children)) {
my $childip = $children{$child};
- if (defined(&Apache::lonnet::get_hosts_from_ip($childip))) {
+ if ($childip ne '127.0.0.1'
+ && !defined(&Apache::lonnet::get_hosts_from_ip($childip))) {
logthis(' UpdateHosts killing child '
." $child for ip $childip ");
kill('INT', $child);
@@ -5367,8 +5367,6 @@ sub make_new_child {
# -----------------------------------------------------------------------------
# see if we know client and 'check' for spoof IP by ineffective challenge
- ReadManagerTable; # May also be a manager!!
-
my $outsideip=$clientip;
if ($clientip eq '127.0.0.1') {
$outsideip=&Apache::lonnet::get_host_ip($perlvar{'lonHostID'});
@@ -5488,7 +5486,7 @@ sub make_new_child {
# ---------------- New known client connecting, could mean machine online again
if (&Apache::lonnet::get_host_ip($currenthostid) ne $clientip
&& $clientip ne '127.0.0.1') {
- &Apache::lonnet::reconlonc();
+ &Apache::lonnet::reconlonc($clientname);
}
&logthis("Established connection: $clientname");
&status('Will listen to '.$clientname);
@@ -6017,7 +6015,7 @@ sub subscribe {
# the metadata
unless ($fname=~/\.meta$/) { &unsub("$fname.meta",$clientip); }
$fname=~s/\/home\/httpd\/html\/res/raw/;
- $fname="http://$thisserver/".$fname;
+ $fname="http://".&Apache::lonnet::hostname($perlvar{'lonHostID'})."/".$fname;
$result="$fname\n";
}
} else {
@@ -6174,7 +6172,7 @@ sub sethost {
if (&Apache::lonnet::get_host_ip($perlvar{'lonHostID'})
eq &Apache::lonnet::get_host_ip($hostid)) {
$currenthostid =$hostid;
- $currentdomainid=&Apache::lonnet::domain($hostid);
+ $currentdomainid=&Apache::lonnet::host_domain($hostid);
&logthis("Setting hostid to $hostid, and domain to $currentdomainid");
} else {
&logthis("Requested host id $hostid not an alias of ".