--- ftp.monitor	Mon Mar 17 13:10:45 2003
+++ ftp.monitor.new	Mon Mar 17 13:10:22 2003
@@ -7,6 +7,9 @@
 #
 # Arguments are "-p port -t timeout host [host...]"
 #
+# Changed to detect no ftp server when socket opened okay.
+# Dan Kendall 17/03/03
+#
 # Adapted from "http.monitor" by
 # Jim Trocki
 #
@@ -81,7 +84,7 @@
 
     $Path = '/';
 
-    my $result;
+    my $result = undef;
 
 ###############################################################
     eval {
@@ -109,7 +112,12 @@
 
     	if (!$ok) {
 	    	alarm 0;
-	    	return 0;
+			$result = {
+				"ok" => 0,
+				"error" => "Connection refused",
+			};
+			close(S);
+	    	return undef;
     	}
 
 	print S "quit\r\n";
@@ -117,7 +125,12 @@
 	$in = <S>;
 	if ($in !~ /^221 /) {
 	    alarm 0;
-	    return 0;
+		 $result = {
+			"ok" => 0,
+			"error" => "FTP server error",
+		 };
+		 close(S);
+	    return undef;
 	}
 
 	$ServerOK = 1;
@@ -127,21 +140,25 @@
 
     };
 
-    if ($result->{"error"} ne "") {
-    	return $result;
-    }
-
+	#catch timeout
     if ($EVAL_ERROR and ($EVAL_ERROR =~ /^Timeout Alarm/)) {
-	return {
+		$result = {
 	    "ok" => 0,
 	    "error" => "timeout",
 	};
     }
 
-    return {
-    	"ok" => 1,
-	"error" => undef,
+	#make sure something's returned
+	if( !defined($result) )
+	{
+		$result = {
+			'ok' => 1,
+			'error' => undef,
     };
+	}
+
+  	return $result;
+
 }
 
 
