--- loncom/lond 2007/04/04 00:02:50 1.369
+++ loncom/lond 2007/08/23 17:39:20 1.379
@@ -2,7 +2,7 @@
# The LearningOnline Network
# lond "LON Daemon" Server (port "LOND" 5663)
#
-# $Id: lond,v 1.369 2007/04/04 00:02:50 albertel Exp $
+# $Id: lond,v 1.379 2007/08/23 17:39:20 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.369 $'; #' stupid emacs
+my $VERSION='$Revision: 1.379 $'; #' 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;
@@ -136,7 +135,7 @@ my @adderrors = ("ok",
"lcuseradd Unable to make www member of users's group",
"lcuseradd Unable to su to root",
"lcuseradd Unable to set password",
- "lcuseradd Usrname has invalid characters",
+ "lcuseradd Username has invalid characters",
"lcuseradd Password has an invalid character",
"lcuseradd User already exists",
"lcuseradd Could not add user.",
@@ -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 {
@@ -2191,13 +2187,13 @@ sub subscribe_handler {
®ister_handler("sub", \&subscribe_handler, 0, 1, 0);
#
-# Determine the version of a resource (?) Or is it return
-# the top version of the resource? Not yet clear from the
-# code in currentversion.
+# Determine the latest version of a resource (it looks for the highest
+# past version and then returns that +1)
#
# Parameters:
# $cmd - The command that got us here.
# $tail - Tail of the command (remaining parameters).
+# (Should consist of an absolute path to a file)
# $client - File descriptor connected to client.
# Returns
# 0 - Requested to exit, caller should shut down.
@@ -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 {