]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: Simplify forward-control test.
authordtucker@openbsd.org <dtucker@openbsd.org>
Wed, 20 Apr 2022 05:24:13 +0000 (05:24 +0000)
committerDarren Tucker <dtucker@dtucker.net>
Wed, 20 Apr 2022 05:36:53 +0000 (15:36 +1000)
Since we no longer need to support SSH1 we don't need to run shell
commands on the other end of the connection and can use ssh -N instead.
This also makes the test less racy.

OpenBSD-Regress-ID: 32e94ce272820cc398f30b848b2b0f080d10302c

regress/forward-control.sh

index 02f7667a665b527adb4bf1805cdf42511826e5ff..3dcddbc7e8b2ee713b35331aacbc6a2e9b7bc429 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: forward-control.sh,v 1.8 2021/05/07 09:23:40 dtucker Exp $
+#      $OpenBSD: forward-control.sh,v 1.9 2022/04/20 05:24:13 dtucker Exp $
 #      Placed in the Public Domain.
 
 tid="sshd control of local and remote forwarding"
@@ -6,19 +6,7 @@ tid="sshd control of local and remote forwarding"
 LFWD_PORT=3320
 RFWD_PORT=3321
 CTL=$OBJ/ctl-sock
-READY=$OBJ/ready
-
-wait_for_file_to_appear() {
-       _path=$1
-       _n=0
-       while test ! -f $_path ; do
-               test $_n -eq 1 && trace "waiting for $_path to appear"
-               _n=`expr $_n + 1`
-               test $_n -ge 20 && return 1
-               sleep 1
-       done
-       return 0
-}
+WAIT_SECONDS=20
 
 wait_for_process_to_exit() {
        _pid=$1
@@ -26,7 +14,7 @@ wait_for_process_to_exit() {
        while kill -0 $_pid 2>/dev/null ; do
                test $_n -eq 1 && trace "waiting for $_pid to exit"
                _n=`expr $_n + 1`
-               test $_n -ge 20 && return 1
+               test $_n -ge $WAIT_SECONDS && return 1
                sleep 1
        done
        return 0
@@ -36,19 +24,18 @@ wait_for_process_to_exit() {
 check_lfwd() {
        _expected=$1
        _message=$2
-       rm -f $READY
        ${SSH} -F $OBJ/ssh_proxy \
            -L$LFWD_PORT:127.0.0.1:$PORT \
            -o ExitOnForwardFailure=yes \
-           -n host exec sh -c \'"sleep 60 & echo \$! > $READY ; wait "\' \
-           >/dev/null 2>&1 &
+           -n -N host >/dev/null 2>&1 &
        _sshpid=$!
-       wait_for_file_to_appear $READY || \
+       if test $? -ne 0; then
                fatal "check_lfwd ssh fail: $_message"
+       fi
        ${SSH} -F $OBJ/ssh_config -p $LFWD_PORT \
            -oConnectionAttempts=10 host true >/dev/null 2>&1
        _result=$?
-       kill $_sshpid `cat $READY` 2>/dev/null
+       kill $_sshpid 2>/dev/null
        wait_for_process_to_exit $_sshpid
        if test "x$_expected" = "xY" -a $_result -ne 0 ; then
                fail "check_lfwd failed (expecting success): $_message"
@@ -65,20 +52,17 @@ check_lfwd() {
 check_rfwd() {
        _expected=$1
        _message=$2
-       rm -f $READY
        ${SSH} -F $OBJ/ssh_proxy \
            -R127.0.0.1:$RFWD_PORT:127.0.0.1:$PORT \
            -o ExitOnForwardFailure=yes \
-           -n host exec sh -c \'"sleep 60 & echo \$! > $READY ; wait "\' \
-           >/dev/null 2>&1 &
+           -n -N host >/dev/null 2>&1 &
        _sshpid=$!
-       wait_for_file_to_appear $READY
        _result=$?
        if test $_result -eq 0 ; then
                ${SSH} -F $OBJ/ssh_config -p $RFWD_PORT \
                    -oConnectionAttempts=10 host true >/dev/null 2>&1
                _result=$?
-               kill $_sshpid `cat $READY` 2>/dev/null
+               kill $_sshpid 2>/dev/null
                wait_for_process_to_exit $_sshpid
        fi
        if test "x$_expected" = "xY" -a $_result -ne 0 ; then