- Display curl_ssh_config when socks server fails to start.
authorYang Tse <yangsita@gmail.com>
Fri, 4 Jan 2008 13:00:40 +0000 (13:00 +0000)
committerYang Tse <yangsita@gmail.com>
Fri, 4 Jan 2008 13:00:40 +0000 (13:00 +0000)
- Capability of running socks5 tests must be based on ssh daemon version
  and not on ssh client version.

tests/runtests.pl

index cae40bb..22d3fe6 100755 (executable)
@@ -67,10 +67,13 @@ use Cwd;
 
 # Variables and subs imported from sshhelp module
 use sshhelp qw(
+    $sshdexe
     $sshexe
     $sshconfig
     $sshlog
+    display_sshconfig
     display_sshlog
+    find_sshd
     find_ssh
     sshversioninfo
     );
@@ -185,10 +188,10 @@ my %skipped;    # skipped{reason}=counter, reasons for skip
 my @teststat;   # teststat[testnum]=reason, reasons for skip
 my %disabled_keywords; # key words of tests to skip
 
-my $sshid;      # for socks server, ssh version id
-my $sshvernum;  # for socks server, ssh version number
-my $sshverstr;  # for socks server, ssh version string
-my $ssherror;   # for socks server, ssh version error
+my $sshdid;      # for socks server, ssh daemon version id
+my $sshdvernum;  # for socks server, ssh daemon version number
+my $sshdverstr;  # for socks server, ssh daemon version string
+my $sshderror;   # for socks server, ssh daemon version error
 
 #######################################################################
 # variables the command line options may set
@@ -1137,6 +1140,25 @@ sub runsocksserver {
         return (0,0);
     }
 
+    # Find out ssh daemon canonical file name
+    my $sshd = find_sshd();
+    if(!$sshd) {
+        logmsg "RUN: SOCKS server cannot find $sshdexe\n";
+        $doesntrun{$pidfile} = 1;
+        return (0,0);
+    }
+
+    # Find out ssh daemon version info
+    ($sshdid, $sshdvernum, $sshdverstr, $sshderror) = sshversioninfo($sshd);
+    if(!$sshdid) {
+        # Not an OpenSSH or SunSSH ssh daemon
+        logmsg "$sshderror\n" if($verbose);
+        logmsg "SCP, SFTP and SOCKS tests require OpenSSH 2.9.9 or later\n";
+        $doesntrun{$pidfile} = 1;
+        return (0,0);
+    }
+    logmsg "ssh server found $sshd is $sshdverstr" if($verbose);
+
     # Find out ssh client canonical file name
     my $ssh = find_ssh();
     if(!$ssh) {
@@ -1146,7 +1168,7 @@ sub runsocksserver {
     }
 
     # Find out ssh client version info
-    ($sshid, $sshvernum, $sshverstr, $ssherror) = sshversioninfo($ssh);
+    my ($sshid, $sshvernum, $sshverstr, $ssherror) = sshversioninfo($ssh);
     if(!$sshid) {
         # Not an OpenSSH or SunSSH ssh client
         logmsg "$ssherror\n" if($verbose);
@@ -1165,6 +1187,13 @@ sub runsocksserver {
     }
     logmsg "ssh client found $ssh is $sshverstr\n" if($verbose);
 
+    # Verify if ssh client and ssh daemon versions match
+    if(($sshdid ne $sshid) || ($sshdvernum != $sshvernum)) {
+        # Our test harness works with mismatched versions
+        logmsg "Warning: ssh server and client versions do not match\n"
+            if($verbose);
+    }
+
     # Config file options for ssh client are previously set from sshserver.pl
     if(! -e $sshconfig) {
         logmsg "RUN: SOCKS server cannot find $sshconfig\n";
@@ -1182,6 +1211,7 @@ sub runsocksserver {
         # it is NOT alive
         logmsg "RUN: failed to start the SOCKS server\n";
         display_sshlog();
+        display_sshconfig();
         stopserver("$pid2");
         $doesntrun{$pidfile} = 1;
         return (0,0);
@@ -2476,19 +2506,19 @@ sub startservers {
                 }
             }
             if($what eq "socks5") {
-                if(!$sshid) {
-                    # Not an OpenSSH or SunSSH ssh client
+                if(!$sshdid) {
+                    # Not an OpenSSH or SunSSH ssh daemon
                     logmsg "Not OpenSSH or SunSSH; socks5 tests need at least OpenSSH 3.7\n";
                     return "failed starting socks5 server";
                 }
-                elsif(($sshid =~ /OpenSSH/) && ($sshvernum < 370)) {
+                elsif(($sshdid =~ /OpenSSH/) && ($sshdvernum < 370)) {
                     # Need OpenSSH 3.7 for socks5 - http://www.openssh.com/txt/release-3.7
-                    logmsg "$sshverstr insufficient; socks5 tests need at least OpenSSH 3.7\n";
+                    logmsg "$sshdverstr insufficient; socks5 tests need at least OpenSSH 3.7\n";
                     return "failed starting socks5 server";
                 }
-                elsif(($sshid =~ /SunSSH/)  && ($sshvernum < 100)) {
+                elsif(($sshdid =~ /SunSSH/)  && ($sshdvernum < 100)) {
                     # Need SunSSH 1.0 for socks5
-                    logmsg "$sshverstr insufficient; socks5 tests need at least SunSSH 1.0\n";
+                    logmsg "$sshdverstr insufficient; socks5 tests need at least SunSSH 1.0\n";
                     return "failed starting socks5 server";
                 }
             }