]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
runtests: add verify/socks check
authorDaniel Stenberg <daniel@haxx.se>
Mon, 3 Jan 2022 12:33:46 +0000 (13:33 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 3 Jan 2022 21:32:05 +0000 (22:32 +0100)
If used, this data is compared with the data in log/socksd-request.log
which the socksd server logs.

Added to FILEFORMAT.md

tests/FILEFORMAT.md
tests/runtests.pl

index 1c45d156301e7875a1ae0346b93f8376b19b02b7..bfd5d221e5e613f1fc9a43ce8d4b6d5843de821a 100644 (file)
@@ -243,6 +243,9 @@ The connect section is used instead of the 'data' for all CONNECT
 requests. The remainder of the rules for the data section then apply but with
 a connect prefix.
 
+### `<socks>`
+Address type and address details as logged by the SOCKS proxy.
+
 ### `<datacheck [mode="text"] [nonewline="yes"]>`
 if the data is sent but this is what should be checked afterwards. If
 `nonewline=yes` is set, runtests will cut off the trailing newline from the
index 7f3b20c14ad063466e44d771deeeb1144574e545..7ac22035b00d9e85dbe771fb596086dfb2d2d1bd 100755 (executable)
@@ -185,6 +185,7 @@ my $UNITDIR="./unit";
 my $SERVERIN="$LOGDIR/server.input"; # what curl sent the server
 my $SERVER2IN="$LOGDIR/server2.input"; # what curl sent the second server
 my $PROXYIN="$LOGDIR/proxy.input"; # what curl sent the proxy
+my $SOCKSIN="$LOGDIR/socksd-request.log"; # what curl sent to the SOCKS proxy
 my $CURLLOG="commands.log"; # all command lines run
 my $FTPDCMD="$LOGDIR/ftpserver.cmd"; # copy server instructions here
 my $SERVERLOGS_LOCK="$LOGDIR/serverlogs.lock"; # server logs advisor read lock
@@ -4586,6 +4587,17 @@ sub singletest {
     }
     $ok .= ($outputok) ? "o" : "-"; # output checked or not
 
+    # verify SOCKS proxy details
+    my @socksprot = getpart("verify", "socks");
+    if(@socksprot) {
+        # Verify the sent SOCKS proxy details
+        my @out = loadarray($SOCKSIN);
+        $res = compare($testnum, $testname, "socks", \@out, \@socksprot);
+        if($res) {
+            return $errorreturncode;
+        }
+    }
+
     # accept multiple comma-separated error codes
     my @splerr = split(/ *, */, $errorcode);
     my $errok;