--- loncom/lond 2003/09/16 10:13:20 1.145 +++ loncom/lond 2003/09/16 10:28:14 1.146 @@ -2,7 +2,7 @@ # The LearningOnline Network # lond "LON Daemon" Server (port "LOND" 5663) # -# $Id: lond,v 1.145 2003/09/16 10:13:20 foxr Exp $ +# $Id: lond,v 1.146 2003/09/16 10:28:14 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -60,6 +60,12 @@ # 09/08/2003 Ron Fox: Told lond to take care of change logging so we # don't have to remember it: # $Log: lond,v $ +# Revision 1.146 2003/09/16 10:28:14 foxr +# ReinitProcess - decode the process selector and produce the associated pid +# filename. Note: While it is possible to test that valid process selectors are +# handled properly I am not able to test that invalid process selectors produce +# the appropriate error as lonManage also blocks the use of invalid process selectors. +# # Revision 1.145 2003/09/16 10:13:20 foxr # Added ReinitProcess function to oversee the parsing and processing of the # reinit: client request. @@ -104,7 +110,7 @@ my $DEBUG = 0; # Non zero to ena my $status=''; my $lastlog=''; -my $VERSION='$Revision: 1.145 $'; #' stupid emacs +my $VERSION='$Revision: 1.146 $'; #' stupid emacs my $remoteVERSION; my $currenthostid; my $currentdomainid; @@ -376,6 +382,23 @@ sub PushFile { sub ReinitProcess { my $request = shift; + + # separate the request (reinit) from the process identifier and + # validate it producing the name of the .pid file for the process. + # + # + my ($junk, $process) = split(":", $request); + my $processpidfile = $perlvar{'lonDaemons'}.'/'; + if($process eq 'lonc') { + $processpidfile = $processpidfile."lonc.pid"; + } elsif ($process eq 'lond') { + $processpidfile = $processpidfile."lond.pid"; + } else { + &logthis('"); + return "error:Invalid process identifier $process"; + } + &logthis(' Reinitializing '.$process." "); return 'ok'; } @@ -978,6 +1001,7 @@ sub make_new_child { if ($wasenc == 1) { my $cert = GetCertificate($userinput); if(ValidManager($cert)) { + chomp($userinput); my $reply = ReinitProcess($userinput); print $client "$reply\n"; } else {