--- projects/cms/source/host/ihost-perl/ihost.pl 2001/03/14 18:48:33 1.28 +++ projects/cms/source/host/ihost-perl/ihost.pl 2001/03/16 18:25:59 1.32 @@ -10,7 +10,7 @@ # - pjm2@ukc.ac.uk # # $Author: pjm2 $ -# $Id: ihost.pl,v 1.28 2001/03/14 18:48:33 pjm2 Exp $ +# $Id: ihost.pl,v 1.32 2001/03/16 18:25:59 pjm2 Exp $ #------------------------------------------------------------ $| = 1; @@ -102,7 +102,7 @@ sub wait_then_retry() { #----------------------------------------------------------------------- sub tcp_configure() { - while (1 == 1) { + while (1) { my($sock) = new IO::Socket::INET( PeerAddr => $filter_manager_addr, PeerPort => $filter_manager_port, @@ -111,7 +111,6 @@ sub tcp_configure() { if (!defined $sock) { print "IHOST ERROR: Could not connect to $filter_manager_addr:$filter_manager_port.\n"; print "Please check that there is an i-scream server at this address.\n"; - close($sock); wait_then_retry(); next; } @@ -121,8 +120,8 @@ sub tcp_configure() { print $sock "STARTCONFIG\n"; $response = <$sock>; - if (!chop $response eq "OK") { - print "The i-scream server rejected the STARTCONFIG command. Terminated."; + if ($response && !($response eq "OK\n")) { + print "The i-scream server rejected the STARTCONFIG command.\n"; close($sock); wait_then_retry(); next; @@ -132,6 +131,12 @@ sub tcp_configure() { print $sock "LASTMODIFIED\n"; $response = <$sock>; + if (!$response) { + print "The i-scream server did not return anything for the LASTMODIFIED command.\n"; + close($sock); + wait_then_retry(); + next; + } chop $response; $last_modified = $response; @@ -139,6 +144,12 @@ sub tcp_configure() { print $sock "FILELIST\n"; $response = <$sock>; + if (!$response) { + print "The i-scream server did not provide a configuration file list.\n"; + close($sock); + wait_then_retry(); + next; + } chop $response; $file_list = $response; @@ -146,6 +157,12 @@ sub tcp_configure() { print $sock "FQDN\n"; $response = <$sock>; + if (!$response) { + print "The i-scream server did not tell us our FQDN.\n"; + close($sock); + wait_then_retry(); + next; + } chop $response; $fqdn = $response; @@ -153,11 +170,23 @@ sub tcp_configure() { print $sock "UDPUpdateTime\n"; $response = <$sock>; + if (!$response) { + print "The i-scream server did not give us a UDPUpdateTime.\n"; + close($sock); + wait_then_retry(); + next; + } chop $response; $udp_update_time = $response; print $sock "TCPUpdateTime\n"; $response = <$sock>; + if (!$response) { + print "The i-scream server did not give us a TCPUpdateTime.\n"; + close($sock); + wait_then_retry(); + next; + } chop $response; $tcp_update_time = $response; @@ -165,8 +194,7 @@ sub tcp_configure() { print $sock "ENDCONFIG\n"; $response = <$sock>; - chomp $response; - if (!$response eq "OK") { + if ($response && !($response eq "OK\n")) { print "ENDCONFIG command to server failed. Terminated.\n"; close($sock); wait_then_retry(); @@ -177,14 +205,14 @@ sub tcp_configure() { print $sock "FILTER\n"; $response = <$sock>; - unless (defined($response)) { + if (!$response) { print "Failed: Could not get a filter address from the filter manager.\n"; close($sock); wait_then_retry(); next; } chop $response; - $response =~ /(.*);(.*);(.*)/; + $response =~ /^(.*);(.*);(.*)/; if ($response eq "ERROR") { print "There are no active configured filters for your host.\n"; close($sock); @@ -203,12 +231,11 @@ sub tcp_configure() { print $sock "END\n"; $response = <$sock>; - chop $response; - if ($response eq "OK") { + if ($response && ($response eq "OK\n")) { print "Host successfully configured via TCP.\n" } else { - print "The server failed the host configuration on the END command."; + print "The server failed the host configuration on the END command.\n"; close($sock); wait_then_retry(); next; @@ -352,9 +379,7 @@ sub send_tcp_heartbeat() { print $sock "HEARTBEAT\n"; $response = <$sock>; - return if (!defined $response); - chop $response; - if (!$response eq "OK") { + if (!$response eq "OK\n") { close($sock); print "Server gave wrong response to HEARTBEAT: $response\n"; &tcp_configure(); @@ -363,9 +388,7 @@ sub send_tcp_heartbeat() { print $sock "CONFIG\n"; $response = <$sock>; - return if (!defined $response); - chop $response; - if (!$response eq "OK") { + if (!$response eq "OK\n") { close($sock); print "Server gave wrong response to CONFIG: $response\n"; &tcp_configure(); @@ -374,9 +397,7 @@ sub send_tcp_heartbeat() { print $sock "$file_list\n"; $response = <$sock>; - return if (!defined $response); - chop $response; - if (!$response eq "OK") { + if (!$response eq "OK\n") { close($sock); print "Server gave wrong response to file list: $response\n"; &tcp_configure(); @@ -385,15 +406,13 @@ sub send_tcp_heartbeat() { print $sock "$last_modified\n"; $response = <$sock>; - return if (!defined $response); - chop $response; - if ($response eq "ERROR") { + if ($response eq "ERROR\n") { close($sock); print "Server configuration changed. Reconfiguring with filter manager.\n"; &tcp_configure(); return; } - if (!$response eq "OK") { + if (!$response eq "OK\n") { close($sock); print "Server gave wrong response to HEARTBEAT: $response\n"; &tcp_configure(); @@ -402,9 +421,7 @@ sub send_tcp_heartbeat() { print $sock "ENDHEARTBEAT\n"; $response = <$sock>; - return if (!defined $response); - chop $response; - if (!$response eq "OK") { + if (!$response eq "OK\n") { close($sock); print "Server gave wrong response to ENDHEARTBEAT: $response\n"; &tcp_configure();