mirror of
https://github.com/curl/curl.git
synced 2025-01-18 14:04:30 +08:00
runtests: remove duplicated feature variables
Use the feature map stored in the hash table instead. Most of the variables were only used only once, to set the value in the hash table. Ref: #10818
This commit is contained in:
parent
e06eb85b3d
commit
1f631864f4
@ -180,8 +180,6 @@ my $TESTCASES="all";
|
||||
my $perl="perl -I$srcdir";
|
||||
my $server_response_maxtime=13;
|
||||
|
||||
my $debug_build=0; # built debug enabled (--enable-debug)
|
||||
my $has_memory_tracking=0; # built with memory tracking (--enable-curldebug)
|
||||
my $libtool;
|
||||
my $repeat = 0;
|
||||
|
||||
@ -206,69 +204,14 @@ my $httptlssrv = find_httptlssrv();
|
||||
my $uname_release = `uname -r`;
|
||||
my $is_wsl = $uname_release =~ /Microsoft$/;
|
||||
|
||||
my $has_ssl; # set if libcurl is built with SSL support
|
||||
my $has_largefile; # set if libcurl is built with large file support
|
||||
my $has_idn; # set if libcurl is built with IDN support
|
||||
my $http_ipv6; # set if HTTP server has IPv6 support
|
||||
my $http_unix; # set if HTTP server has Unix sockets support
|
||||
my $ftp_ipv6; # set if FTP server has IPv6 support
|
||||
my $tftp_ipv6; # set if TFTP server has IPv6 support
|
||||
my $gopher_ipv6; # set if Gopher server has IPv6 support
|
||||
my $has_ipv6; # set if libcurl is built with IPv6 support
|
||||
my $has_unix; # set if libcurl is built with Unix sockets support
|
||||
my $has_libz; # set if libcurl is built with libz support
|
||||
my $has_brotli; # set if libcurl is built with brotli support
|
||||
my $has_zstd; # set if libcurl is built with zstd support
|
||||
my $has_getrlimit; # set if system has getrlimit()
|
||||
my $has_ntlm; # set if libcurl is built with NTLM support
|
||||
my $has_ntlm_wb; # set if libcurl is built with NTLM delegation to winbind
|
||||
my $has_sspi; # set if libcurl is built with Windows SSPI
|
||||
my $has_gssapi; # set if libcurl is built with a GSS-API library
|
||||
my $has_kerberos; # set if libcurl is built with Kerberos support
|
||||
my $has_spnego; # set if libcurl is built with SPNEGO support
|
||||
my $has_charconv; # set if libcurl is built with CharConv support
|
||||
my $has_tls_srp; # set if libcurl is built with TLS-SRP support
|
||||
my $has_http2; # set if libcurl is built with HTTP2 support
|
||||
my $has_h2c; # set if libcurl is built with h2c support
|
||||
my $has_http3; # set if libcurl is built with HTTP3 support
|
||||
my $has_httpsproxy; # set if libcurl is built with HTTPS-proxy support
|
||||
my $has_crypto; # set if libcurl is built with cryptographic support
|
||||
my $has_cares; # set if built with c-ares
|
||||
my $has_threadedres;# set if built with threaded resolver
|
||||
my $has_psl; # set if libcurl is built with PSL support
|
||||
my $has_altsvc; # set if libcurl is built with alt-svc support
|
||||
my $has_hsts; # set if libcurl is built with HSTS support
|
||||
my $has_ldpreload; # set if built for systems supporting LD_PRELOAD
|
||||
my $has_multissl; # set if build with MultiSSL support
|
||||
my $has_manual; # set if built with built-in manual
|
||||
my $has_win32; # set if built for Windows
|
||||
my $has_mingw; # set if built with MinGW (as opposed to MinGW-w64)
|
||||
my $has_hyper = 0; # set if built with Hyper
|
||||
my $has_libssh2; # set if built with libssh2
|
||||
my $has_libssh; # set if built with libssh
|
||||
my $has_oldlibssh; # set if built with libssh < 0.9.4
|
||||
my $has_wolfssh; # set if built with wolfssh
|
||||
my $has_unicode; # set if libcurl is built with Unicode support
|
||||
my $has_threadsafe; # set if libcurl is built with thread-safety support
|
||||
|
||||
# this version is decided by the particular nghttp2 library that is being used
|
||||
my $h2cver = "h2c";
|
||||
|
||||
my $has_rustls; # built with rustls
|
||||
my $has_openssl; # built with a lib using an OpenSSL-like API
|
||||
my $has_gnutls; # built with GnuTLS
|
||||
my $has_nss; # built with NSS
|
||||
my $has_wolfssl; # built with wolfSSL
|
||||
my $has_bearssl; # built with BearSSL
|
||||
my $has_schannel; # built with Schannel
|
||||
my $has_sectransp; # built with Secure Transport
|
||||
my $has_boringssl; # built with BoringSSL
|
||||
my $has_libressl; # built with libressl
|
||||
my $has_mbedtls; # built with mbedTLS
|
||||
|
||||
my $has_sslpinning; # built with a TLS backend that supports pinning
|
||||
|
||||
my $has_shared = "unknown"; # built shared
|
||||
my $has_shared; # built as a shared library
|
||||
|
||||
my $resolver; # name of the resolver backend (for human presentation)
|
||||
|
||||
@ -2929,92 +2872,10 @@ sub compare {
|
||||
return $result;
|
||||
}
|
||||
|
||||
sub setupfeatures {
|
||||
$feature{"alt-svc"} = $has_altsvc;
|
||||
$feature{"bearssl"} = $has_bearssl;
|
||||
$feature{"brotli"} = $has_brotli;
|
||||
$feature{"c-ares"} = $has_cares;
|
||||
$feature{"crypto"} = $has_crypto;
|
||||
$feature{"debug"} = $debug_build;
|
||||
$feature{"getrlimit"} = $has_getrlimit;
|
||||
$feature{"GnuTLS"} = $has_gnutls;
|
||||
$feature{"GSS-API"} = $has_gssapi;
|
||||
$feature{"h2c"} = $has_h2c;
|
||||
$feature{"HSTS"} = $has_hsts;
|
||||
$feature{"http/2"} = $has_http2;
|
||||
$feature{"http/3"} = $has_http3;
|
||||
$feature{"https-proxy"} = $has_httpsproxy;
|
||||
$feature{"hyper"} = $has_hyper;
|
||||
$feature{"idn"} = $has_idn;
|
||||
$feature{"ipv6"} = $has_ipv6;
|
||||
$feature{"Kerberos"} = $has_kerberos;
|
||||
$feature{"large_file"} = $has_largefile;
|
||||
$feature{"ld_preload"} = ($has_ldpreload && !$debug_build);
|
||||
$feature{"libssh"} = $has_libssh;
|
||||
$feature{"libssh2"} = $has_libssh2;
|
||||
$feature{"libz"} = $has_libz;
|
||||
$feature{"manual"} = $has_manual;
|
||||
$feature{"MinGW"} = $has_mingw;
|
||||
$feature{"MultiSSL"} = $has_multissl;
|
||||
$feature{"mbedtls"} = $has_mbedtls;
|
||||
$feature{"NSS"} = $has_nss;
|
||||
$feature{"NTLM"} = $has_ntlm;
|
||||
$feature{"NTLM_WB"} = $has_ntlm_wb;
|
||||
$feature{"oldlibssh"} = $has_oldlibssh;
|
||||
$feature{"OpenSSL"} = $has_openssl || $has_libressl || $has_boringssl;
|
||||
$feature{"PSL"} = $has_psl;
|
||||
$feature{"rustls"} = $has_rustls;
|
||||
$feature{"Schannel"} = $has_schannel;
|
||||
$feature{"sectransp"} = $has_sectransp;
|
||||
$feature{"SPNEGO"} = $has_spnego;
|
||||
$feature{"SSL"} = $has_ssl;
|
||||
$feature{"SSLpinning"} = $has_sslpinning;
|
||||
$feature{"SSPI"} = $has_sspi;
|
||||
$feature{"threaded-resolver"} = $has_threadedres;
|
||||
$feature{"threadsafe"} = $has_threadsafe;
|
||||
$feature{"TLS-SRP"} = $has_tls_srp;
|
||||
$feature{"TrackMemory"} = $has_memory_tracking;
|
||||
$feature{"Unicode"} = $has_unicode;
|
||||
$feature{"unittest"} = $debug_build;
|
||||
$feature{"unix-sockets"} = $has_unix;
|
||||
$feature{"win32"} = $has_win32;
|
||||
$feature{"wolfssh"} = $has_wolfssh;
|
||||
$feature{"wolfssl"} = $has_wolfssl;
|
||||
$feature{"zstd"} = $has_zstd;
|
||||
|
||||
# make each protocol an enabled "feature"
|
||||
for my $p (@protocols) {
|
||||
$feature{$p} = 1;
|
||||
}
|
||||
# 'socks' was once here but is now removed
|
||||
|
||||
#
|
||||
# strings that must match the names used in server/disabled.c
|
||||
#
|
||||
$feature{"cookies"} = 1;
|
||||
$feature{"DoH"} = 1;
|
||||
$feature{"HTTP-auth"} = 1;
|
||||
$feature{"Mime"} = 1;
|
||||
$feature{"netrc"} = 1;
|
||||
$feature{"parsedate"} = 1;
|
||||
$feature{"proxy"} = 1;
|
||||
$feature{"shuffle-dns"} = 1;
|
||||
$feature{"typecheck"} = 1;
|
||||
$feature{"verbose-strings"} = 1;
|
||||
$feature{"wakeup"} = 1;
|
||||
$feature{"headers-api"} = 1;
|
||||
$feature{"xattr"} = 1;
|
||||
$feature{"nghttpx"} = !!$ENV{'NGHTTPX'};
|
||||
$feature{"nghttpx-h3"} = !!$nghttpx_h3;
|
||||
}
|
||||
|
||||
#######################################################################
|
||||
# display information about curl and the host the test suite runs on
|
||||
#
|
||||
sub checksystem {
|
||||
|
||||
unlink($memdump); # remove this if there was one left
|
||||
|
||||
sub checksystemfeatures {
|
||||
my $feat;
|
||||
my $curl;
|
||||
my $libcurl;
|
||||
@ -3058,84 +2919,88 @@ sub checksystem {
|
||||
|
||||
$libcurl = $2;
|
||||
if($curl =~ /linux|bsd|solaris/) {
|
||||
$has_ldpreload = 1;
|
||||
# system support LD_PRELOAD; may be disabled later
|
||||
$feature{"ld_preload"} = 1;
|
||||
}
|
||||
if($curl =~ /win32|Windows|mingw(32|64)/) {
|
||||
# This is a Windows MinGW build or native build, we need to use
|
||||
# Win32-style path.
|
||||
$pwd = pathhelp::sys_native_current_path();
|
||||
$has_textaware = 1;
|
||||
$has_win32 = 1;
|
||||
$has_mingw = 1 if ($curl =~ /-pc-mingw32/);
|
||||
$feature{"win32"} = 1;
|
||||
# set if built with MinGW (as opposed to MinGW-w64)
|
||||
$feature{"MinGW"} = 1 if ($curl =~ /-pc-mingw32/);
|
||||
}
|
||||
if ($libcurl =~ /\s(winssl|schannel)\b/i) {
|
||||
$has_schannel=1;
|
||||
$has_sslpinning=1;
|
||||
$feature{"Schannel"} = 1;
|
||||
$feature{"SSLpinning"} = 1;
|
||||
}
|
||||
elsif ($libcurl =~ /\sopenssl\b/i) {
|
||||
$has_openssl=1;
|
||||
$has_sslpinning=1;
|
||||
$feature{"OpenSSL"} = 1;
|
||||
$feature{"SSLpinning"} = 1;
|
||||
}
|
||||
elsif ($libcurl =~ /\sgnutls\b/i) {
|
||||
$has_gnutls=1;
|
||||
$has_sslpinning=1;
|
||||
$feature{"GnuTLS"} = 1;
|
||||
$feature{"SSLpinning"} = 1;
|
||||
}
|
||||
elsif ($libcurl =~ /\srustls-ffi\b/i) {
|
||||
$has_rustls=1;
|
||||
$feature{"rustls"} = 1;
|
||||
}
|
||||
elsif ($libcurl =~ /\snss\b/i) {
|
||||
$has_nss=1;
|
||||
$has_sslpinning=1;
|
||||
$feature{"NSS"} = 1;
|
||||
$feature{"SSLpinning"} = 1;
|
||||
}
|
||||
elsif ($libcurl =~ /\swolfssl\b/i) {
|
||||
$has_wolfssl=1;
|
||||
$has_sslpinning=1;
|
||||
$feature{"wolfssl"} = 1;
|
||||
$feature{"SSLpinning"} = 1;
|
||||
}
|
||||
elsif ($libcurl =~ /\sbearssl\b/i) {
|
||||
$has_bearssl=1;
|
||||
$feature{"bearssl"} = 1;
|
||||
}
|
||||
elsif ($libcurl =~ /\ssecuretransport\b/i) {
|
||||
$has_sectransp=1;
|
||||
$has_sslpinning=1;
|
||||
$feature{"sectransp"} = 1;
|
||||
$feature{"SSLpinning"} = 1;
|
||||
}
|
||||
elsif ($libcurl =~ /\sBoringSSL\b/i) {
|
||||
$has_boringssl=1;
|
||||
$has_sslpinning=1;
|
||||
# OpenSSL compatible API
|
||||
$feature{"OpenSSL"} = 1;
|
||||
$feature{"SSLpinning"} = 1;
|
||||
}
|
||||
elsif ($libcurl =~ /\slibressl\b/i) {
|
||||
$has_libressl=1;
|
||||
$has_sslpinning=1;
|
||||
# OpenSSL compatible API
|
||||
$feature{"OpenSSL"} = 1;
|
||||
$feature{"SSLpinning"} = 1;
|
||||
}
|
||||
elsif ($libcurl =~ /\smbedTLS\b/i) {
|
||||
$has_mbedtls=1;
|
||||
$has_sslpinning=1;
|
||||
$feature{"mbedtls"} = 1;
|
||||
$feature{"SSLpinning"} = 1;
|
||||
}
|
||||
if ($libcurl =~ /ares/i) {
|
||||
$has_cares=1;
|
||||
$feature{"c-ares"} = 1;
|
||||
$resolver="c-ares";
|
||||
}
|
||||
if ($libcurl =~ /Hyper/i) {
|
||||
$has_hyper=1;
|
||||
$feature{"hyper"} = 1;
|
||||
}
|
||||
if ($libcurl =~ /nghttp2/i) {
|
||||
# nghttp2 supports h2c, hyper does not
|
||||
$has_h2c=1;
|
||||
$feature{"h2c"} = 1;
|
||||
}
|
||||
if ($libcurl =~ /libssh2/i) {
|
||||
$has_libssh2=1;
|
||||
$feature{"libssh2"} = 1;
|
||||
}
|
||||
if ($libcurl =~ /libssh\/([0-9.]*)\//i) {
|
||||
$has_libssh=1;
|
||||
$feature{"libssh"} = 1;
|
||||
if($1 =~ /(\d+)\.(\d+).(\d+)/) {
|
||||
my $v = $1 * 100 + $2 * 10 + $3;
|
||||
if($v < 94) {
|
||||
# before 0.9.4
|
||||
$has_oldlibssh = 1;
|
||||
$feature{"oldlibssh"} = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($libcurl =~ /wolfssh/i) {
|
||||
$has_wolfssh=1;
|
||||
$feature{"wolfssh"} = 1;
|
||||
}
|
||||
}
|
||||
elsif($_ =~ /^Protocols: (.*)/i) {
|
||||
@ -3156,128 +3021,78 @@ sub checksystem {
|
||||
}
|
||||
elsif($_ =~ /^Features: (.*)/i) {
|
||||
$feat = $1;
|
||||
if($feat =~ /TrackMemory/i) {
|
||||
# built with memory tracking support (--enable-curldebug)
|
||||
$has_memory_tracking = 1;
|
||||
}
|
||||
if($feat =~ /debug/i) {
|
||||
# curl was built with --enable-debug
|
||||
$debug_build = 1;
|
||||
}
|
||||
if($feat =~ /SSL/i) {
|
||||
# ssl enabled
|
||||
$has_ssl=1;
|
||||
}
|
||||
if($feat =~ /MultiSSL/i) {
|
||||
# multiple ssl backends available.
|
||||
$has_multissl=1;
|
||||
}
|
||||
if($feat =~ /Largefile/i) {
|
||||
# large file support
|
||||
$has_largefile=1;
|
||||
}
|
||||
if($feat =~ /IDN/i) {
|
||||
# IDN support
|
||||
$has_idn=1;
|
||||
}
|
||||
if($feat =~ /IPv6/i) {
|
||||
$has_ipv6 = 1;
|
||||
}
|
||||
if($feat =~ /UnixSockets/i) {
|
||||
$has_unix = 1;
|
||||
}
|
||||
if($feat =~ /libz/i) {
|
||||
$has_libz = 1;
|
||||
}
|
||||
if($feat =~ /brotli/i) {
|
||||
$has_brotli = 1;
|
||||
}
|
||||
if($feat =~ /zstd/i) {
|
||||
$has_zstd = 1;
|
||||
}
|
||||
if($feat =~ /NTLM/i) {
|
||||
# NTLM enabled
|
||||
$has_ntlm=1;
|
||||
|
||||
# Use this as a proxy for any cryptographic authentication
|
||||
$has_crypto=1;
|
||||
}
|
||||
if($feat =~ /NTLM_WB/i) {
|
||||
# NTLM delegation to winbind daemon ntlm_auth helper enabled
|
||||
$has_ntlm_wb=1;
|
||||
}
|
||||
if($feat =~ /SSPI/i) {
|
||||
# SSPI enabled
|
||||
$has_sspi=1;
|
||||
}
|
||||
if($feat =~ /GSS-API/i) {
|
||||
# GSS-API enabled
|
||||
$has_gssapi=1;
|
||||
}
|
||||
if($feat =~ /Kerberos/i) {
|
||||
# Kerberos enabled
|
||||
$has_kerberos=1;
|
||||
|
||||
# Use this as a proxy for any cryptographic authentication
|
||||
$has_crypto=1;
|
||||
}
|
||||
if($feat =~ /SPNEGO/i) {
|
||||
# SPNEGO enabled
|
||||
$has_spnego=1;
|
||||
|
||||
# Use this as a proxy for any cryptographic authentication
|
||||
$has_crypto=1;
|
||||
}
|
||||
if($feat =~ /CharConv/i) {
|
||||
# CharConv enabled
|
||||
$has_charconv=1;
|
||||
}
|
||||
if($feat =~ /TLS-SRP/i) {
|
||||
# TLS-SRP enabled
|
||||
$has_tls_srp=1;
|
||||
}
|
||||
if($feat =~ /PSL/i) {
|
||||
# PSL enabled
|
||||
$has_psl=1;
|
||||
}
|
||||
if($feat =~ /alt-svc/i) {
|
||||
# alt-svc enabled
|
||||
$has_altsvc=1;
|
||||
}
|
||||
if($feat =~ /HSTS/i) {
|
||||
$has_hsts=1;
|
||||
}
|
||||
# built with memory tracking support (--enable-curldebug); may be disabled later
|
||||
$feature{"TrackMemory"} = $feat =~ /TrackMemory/i;
|
||||
# curl was built with --enable-debug
|
||||
$feature{"debug"} = $feat =~ /debug/i;
|
||||
# ssl enabled
|
||||
$feature{"SSL"} = $feat =~ /SSL/i;
|
||||
# multiple ssl backends available.
|
||||
$feature{"MultiSSL"} = $feat =~ /MultiSSL/i;
|
||||
# large file support
|
||||
$feature{"large_file"} = $feat =~ /Largefile/i;
|
||||
# IDN support
|
||||
$feature{"idn"} = $feat =~ /IDN/i;
|
||||
# IPv6 support
|
||||
$feature{"ipv6"} = $feat =~ /IPv6/i;
|
||||
# Unix sockets support
|
||||
$feature{"unix-sockets"} = $feat =~ /UnixSockets/i;
|
||||
# libz compression
|
||||
$feature{"libz"} = $feat =~ /libz/i;
|
||||
# Brotli compression
|
||||
$feature{"brotli"} = $feat =~ /brotli/i;
|
||||
# Zstd compression
|
||||
$feature{"zstd"} = $feat =~ /zstd/i;
|
||||
# NTLM enabled
|
||||
$feature{"NTLM"} = $feat =~ /NTLM/i;
|
||||
# NTLM delegation to winbind daemon ntlm_auth helper enabled
|
||||
$feature{"NTLM_WB"} = $feat =~ /NTLM_WB/i;
|
||||
# SSPI enabled
|
||||
$feature{"SSPI"} = $feat =~ /SSPI/i;
|
||||
# GSS-API enabled
|
||||
$feature{"GSS-API"} = $feat =~ /GSS-API/i;
|
||||
# Kerberos enabled
|
||||
$feature{"Kerberos"} = $feat =~ /Kerberos/i;
|
||||
# SPNEGO enabled
|
||||
$feature{"SPNEGO"} = $feat =~ /SPNEGO/i;
|
||||
# CharConv enabled
|
||||
$feature{"CharConv"} = $feat =~ /CharConv/i;
|
||||
# TLS-SRP enabled
|
||||
$feature{"TLS-SRP"} = $feat =~ /TLS-SRP/i;
|
||||
# PSL enabled
|
||||
$feature{"PSL"} = $feat =~ /PSL/i;
|
||||
# alt-svc enabled
|
||||
$feature{"alt-svc"} = $feat =~ /alt-svc/i;
|
||||
# HSTS support
|
||||
$feature{"HSTS"} = $feat =~ /HSTS/i;
|
||||
if($feat =~ /AsynchDNS/i) {
|
||||
if(!$has_cares) {
|
||||
if(!$feature{"c-ares"}) {
|
||||
# this means threaded resolver
|
||||
$has_threadedres=1;
|
||||
$feature{"threaded-resolver"} = 1;
|
||||
$resolver="threaded";
|
||||
}
|
||||
}
|
||||
if($feat =~ /HTTP2/) {
|
||||
# http2 enabled
|
||||
$has_http2=1;
|
||||
|
||||
# http2 enabled
|
||||
$feature{"http/2"} = $feat =~ /HTTP2/;
|
||||
if($feature{"http/2"}) {
|
||||
push @protocols, 'http/2';
|
||||
}
|
||||
if($feat =~ /HTTP3/) {
|
||||
# http3 enabled
|
||||
$has_http3=1;
|
||||
|
||||
# http3 enabled
|
||||
$feature{"http/3"} = $feat =~ /HTTP3/;
|
||||
if($feature{"http/3"}) {
|
||||
push @protocols, 'http/3';
|
||||
}
|
||||
if($feat =~ /HTTPS-proxy/) {
|
||||
$has_httpsproxy=1;
|
||||
|
||||
# https proxy support
|
||||
$feature{"https-proxy"} = $feat =~ /HTTPS-proxy/;
|
||||
if($feature{"https-proxy"}) {
|
||||
# 'https-proxy' is used as "server" so consider it a protocol
|
||||
push @protocols, 'https-proxy';
|
||||
}
|
||||
if($feat =~ /Unicode/i) {
|
||||
$has_unicode = 1;
|
||||
}
|
||||
if($feat =~ /threadsafe/i) {
|
||||
$has_threadsafe = 1;
|
||||
}
|
||||
# UNICODE support
|
||||
$feature{"Unicode"} = $feat =~ /Unicode/i;
|
||||
# Thread-safe init
|
||||
$feature{"threadsafe"} = $feat =~ /threadsafe/i;
|
||||
}
|
||||
#
|
||||
# Test harness currently uses a non-stunnel server in order to
|
||||
@ -3287,7 +3102,7 @@ sub checksystem {
|
||||
# to differentiate this from classic stunnel based 'https' test
|
||||
# harness server.
|
||||
#
|
||||
if($has_tls_srp) {
|
||||
if($feature{"TLS-SRP"}) {
|
||||
my $add_httptls;
|
||||
for(@protocols) {
|
||||
if($_ =~ /^https(-ipv6|)$/) {
|
||||
@ -3301,6 +3116,7 @@ sub checksystem {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!$curl) {
|
||||
logmsg "unable to get curl's version, further details are:\n";
|
||||
logmsg "issued command: \n";
|
||||
@ -3327,13 +3143,17 @@ sub checksystem {
|
||||
open(CONF, "<../lib/curl_config.h");
|
||||
while(<CONF>) {
|
||||
if($_ =~ /^\#define HAVE_GETRLIMIT/) {
|
||||
$has_getrlimit = 1;
|
||||
# set if system has getrlimit()
|
||||
$feature{"getrlimit"} = 1;
|
||||
}
|
||||
}
|
||||
close(CONF);
|
||||
}
|
||||
|
||||
if($has_ipv6) {
|
||||
# disable this feature unless debug mode is also enabled
|
||||
$feature{"ld_preload"} = $feature{"ld_preload"} && !$feature{"debug"};
|
||||
|
||||
if($feature{"ipv6"}) {
|
||||
# client has IPv6 support
|
||||
|
||||
# check if the HTTP server has it!
|
||||
@ -3342,7 +3162,6 @@ sub checksystem {
|
||||
if($sws[0] =~ /IPv6/) {
|
||||
# HTTP server has IPv6 support!
|
||||
$http_ipv6 = 1;
|
||||
$gopher_ipv6 = 1;
|
||||
}
|
||||
|
||||
# check if the FTP server has it!
|
||||
@ -3354,31 +3173,61 @@ sub checksystem {
|
||||
}
|
||||
}
|
||||
|
||||
if($has_unix) {
|
||||
if($feature{"unix-sockets"}) {
|
||||
# client has Unix sockets support, check whether the HTTP server has it
|
||||
my $cmd = "server/sws".exe_ext('SRV')." --version";
|
||||
my @sws = `$cmd`;
|
||||
$http_unix = 1 if($sws[0] =~ /unix/);
|
||||
}
|
||||
|
||||
if(!$has_memory_tracking && $torture) {
|
||||
die "can't run torture tests since curl was built without ".
|
||||
"TrackMemory feature (--enable-curldebug)";
|
||||
}
|
||||
|
||||
open(M, "$CURL -M 2>&1|");
|
||||
while(my $s = <M>) {
|
||||
if($s =~ /built-in manual was disabled at build-time/) {
|
||||
$has_manual = 0;
|
||||
$feature{"manual"} = 0;
|
||||
last;
|
||||
}
|
||||
$has_manual = 1;
|
||||
$feature{"manual"} = 1;
|
||||
last;
|
||||
}
|
||||
close(M);
|
||||
|
||||
$feature{"unittest"} = $feature{"debug"};
|
||||
$feature{"nghttpx"} = !!$ENV{'NGHTTPX'};
|
||||
$feature{"nghttpx-h3"} = !!$nghttpx_h3;
|
||||
|
||||
#
|
||||
# strings that must exactly match the names used in server/disabled.c
|
||||
#
|
||||
$feature{"cookies"} = 1;
|
||||
# Use this as a proxy for any cryptographic authentication
|
||||
$feature{"crypto"} = $feature{"NTLM"} || $feature{"Kerberos"} || $feature{"SPNEGO"};
|
||||
$feature{"DoH"} = 1;
|
||||
$feature{"HTTP-auth"} = 1;
|
||||
$feature{"Mime"} = 1;
|
||||
$feature{"netrc"} = 1;
|
||||
$feature{"parsedate"} = 1;
|
||||
$feature{"proxy"} = 1;
|
||||
$feature{"shuffle-dns"} = 1;
|
||||
$feature{"typecheck"} = 1;
|
||||
$feature{"verbose-strings"} = 1;
|
||||
$feature{"wakeup"} = 1;
|
||||
$feature{"headers-api"} = 1;
|
||||
$feature{"xattr"} = 1;
|
||||
|
||||
# make each protocol an enabled "feature"
|
||||
for my $p (@protocols) {
|
||||
$feature{$p} = 1;
|
||||
}
|
||||
# 'socks' was once here but is now removed
|
||||
|
||||
$has_shared = `sh $CURLCONFIG --built-shared`;
|
||||
chomp $has_shared;
|
||||
$has_shared = $has_shared eq "yes";
|
||||
|
||||
if(!$feature{"TrackMemory"} && $torture) {
|
||||
die "can't run torture tests since curl was built without ".
|
||||
"TrackMemory feature (--enable-curldebug)";
|
||||
}
|
||||
|
||||
my $hostname=join(' ', runclientoutput("hostname"));
|
||||
my $hosttype=join(' ', runclientoutput("uname -a"));
|
||||
@ -3393,8 +3242,8 @@ sub checksystem {
|
||||
"* System: $hosttype",
|
||||
"* OS: $hostos\n");
|
||||
|
||||
if($has_memory_tracking && $has_threadedres) {
|
||||
$has_memory_tracking = 0;
|
||||
if($feature{"TrackMemory"} && $feature{"threaded-resolver"}) {
|
||||
$feature{"TrackMemory"} = 0;
|
||||
logmsg("*\n",
|
||||
"*** DISABLES memory tracking when using threaded resolver\n",
|
||||
"*\n");
|
||||
@ -3412,7 +3261,7 @@ sub checksystem {
|
||||
logmsg ("* Seed: $randseed\n");
|
||||
|
||||
if($verbose) {
|
||||
if($has_unix) {
|
||||
if($feature{"unix-sockets"}) {
|
||||
logmsg "* Unix socket paths:\n";
|
||||
if($http_unix) {
|
||||
logmsg sprintf("* HTTP-Unix:%s\n", $HTTPUNIXPATH);
|
||||
@ -3423,7 +3272,6 @@ sub checksystem {
|
||||
|
||||
logmsg "***************************************** \n";
|
||||
|
||||
setupfeatures();
|
||||
# toggle off the features that were disabled in the build
|
||||
for my $d(@disabled) {
|
||||
$feature{$d} = 0;
|
||||
@ -3670,7 +3518,7 @@ sub prepro {
|
||||
# necessary since those parts might be read by separate servers.
|
||||
if($s =~ /^ *<data(.*)\>/) {
|
||||
if($1 =~ /crlf="yes"/ ||
|
||||
($has_hyper && ($keywords{"HTTP"} || $keywords{"HTTPS"}))) {
|
||||
($feature{"hyper"} && ($keywords{"HTTP"} || $keywords{"HTTPS"}))) {
|
||||
$data_crlf = 1;
|
||||
}
|
||||
}
|
||||
@ -3998,7 +3846,7 @@ sub singletest_setenv {
|
||||
# print "Skipping LD_PRELOAD due to lack of OS support\n";
|
||||
next;
|
||||
}
|
||||
if($debug_build || ($has_shared ne "yes")) {
|
||||
if($feature{"debug"} || !$has_shared) {
|
||||
# print "Skipping LD_PRELOAD due to no release shared build\n";
|
||||
next;
|
||||
}
|
||||
@ -4095,7 +3943,7 @@ sub singletest_count {
|
||||
sub singletest_prepare {
|
||||
my ($testnum, $why) = @_;
|
||||
|
||||
if($has_memory_tracking) {
|
||||
if($feature{"TrackMemory"}) {
|
||||
unlink($memdump);
|
||||
}
|
||||
unlink("core");
|
||||
@ -4516,7 +4364,7 @@ sub singletest_check {
|
||||
}
|
||||
|
||||
if($hash{'crlf'} ||
|
||||
($has_hyper && ($keywords{"HTTP"}
|
||||
($feature{"hyper"} && ($keywords{"HTTP"}
|
||||
|| $keywords{"HTTPS"}))) {
|
||||
map subNewlines(0, \$_), @validstdout;
|
||||
}
|
||||
@ -4555,7 +4403,7 @@ sub singletest_check {
|
||||
|
||||
# get the mode attribute
|
||||
my $filemode=$hash{'mode'};
|
||||
if($filemode && ($filemode eq "text") && $has_hyper) {
|
||||
if($filemode && ($filemode eq "text") && $feature{"hyper"}) {
|
||||
# text mode check in hyper-mode. Sometimes necessary if the stderr
|
||||
# data *looks* like HTTP and thus has gotten CRLF newlines
|
||||
# mistakenly
|
||||
@ -4663,7 +4511,7 @@ sub singletest_check {
|
||||
chomp($replycheckpart[$#replycheckpart]);
|
||||
}
|
||||
if($replycheckpartattr{'crlf'} ||
|
||||
($has_hyper && ($keywords{"HTTP"}
|
||||
($feature{"hyper"} && ($keywords{"HTTP"}
|
||||
|| $keywords{"HTTPS"}))) {
|
||||
map subNewlines(0, \$_), @replycheckpart;
|
||||
}
|
||||
@ -4688,7 +4536,7 @@ sub singletest_check {
|
||||
map s/\n/\r\n/g, @reply;
|
||||
}
|
||||
if($replyattr{'crlf'} ||
|
||||
($has_hyper && ($keywords{"HTTP"}
|
||||
($feature{"hyper"} && ($keywords{"HTTP"}
|
||||
|| $keywords{"HTTPS"}))) {
|
||||
map subNewlines(0, \$_), @reply;
|
||||
}
|
||||
@ -4766,7 +4614,7 @@ sub singletest_check {
|
||||
}
|
||||
|
||||
if($hash{'crlf'} ||
|
||||
($has_hyper && ($keywords{"HTTP"} || $keywords{"HTTPS"}))) {
|
||||
($feature{"hyper"} && ($keywords{"HTTP"} || $keywords{"HTTPS"}))) {
|
||||
map subNewlines(0, \$_), @proxyprot;
|
||||
}
|
||||
|
||||
@ -4810,7 +4658,7 @@ sub singletest_check {
|
||||
map s/\n/\r\n/g, @outfile;
|
||||
}
|
||||
if($hash{'crlf'} ||
|
||||
($has_hyper && ($keywords{"HTTP"}
|
||||
($feature{"hyper"} && ($keywords{"HTTP"}
|
||||
|| $keywords{"HTTPS"}))) {
|
||||
map subNewlines(0, \$_), @outfile;
|
||||
}
|
||||
@ -4877,7 +4725,7 @@ sub singletest_check {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if($has_memory_tracking) {
|
||||
if($feature{"TrackMemory"}) {
|
||||
if(! -f $memdump) {
|
||||
my %cmdhash = getpartattr("client", "command");
|
||||
my $cmdtype = $cmdhash{'type'} || "default";
|
||||
@ -6257,7 +6105,8 @@ init_serverpidfile_hash();
|
||||
#
|
||||
|
||||
if(!$listonly) {
|
||||
checksystem();
|
||||
unlink($memdump); # remove this if there was one left
|
||||
checksystemfeatures();
|
||||
}
|
||||
|
||||
# globally disabled tests
|
||||
|
Loading…
Reference in New Issue
Block a user