--- projects/cms/source/host/ihost-perl/ihost.pl 2001/03/16 18:25:59 1.32 +++ projects/cms/source/host/ihost-perl/ihost.pl 2001/03/22 08:53:59 1.34 @@ -10,7 +10,7 @@ # - pjm2@ukc.ac.uk # # $Author: pjm2 $ -# $Id: ihost.pl,v 1.32 2001/03/16 18:25:59 pjm2 Exp $ +# $Id: ihost.pl,v 1.34 2001/03/22 08:53:59 pjm2 Exp $ #------------------------------------------------------------ $| = 1; @@ -45,7 +45,7 @@ $filter_manager_addr = $ARGV[0]; $filter_manager_port = $ARGV[1]; $seq_no = 1; -$retry_wait = 6; +$retry_wait = 60; # write our PID to a file $pidfile = "/var/tmp/ihost.pid"; @@ -283,7 +283,8 @@ sub send_udp_packet() { } $disk_info .= ""; - my($ip) = inet_ntoa(scalar(gethostbyname(hostname())) || 'localhost'); + my($ip); + $ip = inet_ntoa(scalar(gethostbyname(hostname())) || 'localhost') or $ip = 'localhost'; # Build the XML packet this way, as we can clearly # see the structure and contents... I like this ;-) @@ -360,9 +361,13 @@ EOF # send_tcp_heartbeat # Establishes a TCP connection to an i-scream filter. # The heartbeat is used as a guaranteed "I'm alive" delivery mechanism. +# If we need to reconfigure, then we complete the heartbeat before +# doing so. #----------------------------------------------------------------------- sub send_tcp_heartbeat() { + my ($doReconfigure) = 0; + my($sock) = new IO::Socket::INET( PeerAddr => $filter_addr, PeerPort => $tcp_port, @@ -409,8 +414,7 @@ sub send_tcp_heartbeat() { if ($response eq "ERROR\n") { close($sock); print "Server configuration changed. Reconfiguring with filter manager.\n"; - &tcp_configure(); - return; + $doReconfigure = 1; } if (!$response eq "OK\n") { close($sock); @@ -430,6 +434,8 @@ sub send_tcp_heartbeat() { close($sock); print "^"; + + &tcp_configure() if $doReconfigure; return; }