- delete completed TODO from `./CMakeLists.txt`.
- convert a C++ comment to C89 in `./CMake/CurlTests.c`.
- delete duplicate EOLs from EOF.
- add missing EOL at EOF.
- delete whitespace at EOL (except from expected test results).
- convert tabs to spaces.
- convert CRLF EOLs to LF in GHA yaml.
- text casing fixes in `./CMakeLists.txt`.
- fix a codespell typo in `packages/OS400/initscript.sh`.
Closes #11772
id: expected-behaviour
attributes:
label: I expected the following
- validations:
+ validations:
required: false
-
+
- type: textarea
id: version
attributes:
-# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.\r
-#\r
-# SPDX-License-Identifier: curl\r
-\r
-name: AppVeyor Status Report\r
-\r
-on:\r
- status\r
-\r
-concurrency:\r
- group: ${{ github.workflow }}-${{ github.event.sha }}-${{ github.event.target_url }}\r
- cancel-in-progress: true\r
-\r
-permissions: {}\r
-\r
-jobs:\r
- split:\r
- runs-on: ubuntu-latest\r
- if: ${{ github.event.sender.login == 'appveyor[bot]' }}\r
- permissions:\r
- statuses: write\r
- steps:\r
- - name: Create individual AppVeyor build statuses\r
- if: ${{ github.event.sha && github.event.target_url }}\r
- env:\r
- APPVEYOR_COMMIT_SHA: ${{ github.event.sha }}\r
- APPVEYOR_TARGET_URL: ${{ github.event.target_url }}\r
- APPVEYOR_REPOSITORY: ${{ github.event.repository.full_name }}\r
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\r
- run: |\r
- echo ${APPVEYOR_TARGET_URL} | sed 's/\/project\//\/api\/projects\//' | xargs -t -n1 curl -s | \\r
- jq -c '.build.jobs[] | {target_url: ($target_url + "/job/" + .jobId),\r
- context: (.name | sub("^(Environment: )?"; "AppVeyor / ")),\r
- state: (.status | sub("queued"; "pending")\r
- | sub("starting"; "pending")\r
- | sub("running"; "pending")\r
- | sub("failed"; "failure")\r
- | sub("cancelled"; "error")),\r
- description: .status}' \\r
- --arg target_url ${APPVEYOR_TARGET_URL} | tee /dev/stderr | parallel --pipe -j 1 -N 1 \\r
- gh api --silent --input - repos/${APPVEYOR_REPOSITORY}/statuses/${APPVEYOR_COMMIT_SHA}\r
+# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# SPDX-License-Identifier: curl
+
+name: AppVeyor Status Report
+
+on:
+ status
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.sha }}-${{ github.event.target_url }}
+ cancel-in-progress: true
+
+permissions: {}
+
+jobs:
+ split:
+ runs-on: ubuntu-latest
+ if: ${{ github.event.sender.login == 'appveyor[bot]' }}
+ permissions:
+ statuses: write
+ steps:
+ - name: Create individual AppVeyor build statuses
+ if: ${{ github.event.sha && github.event.target_url }}
+ env:
+ APPVEYOR_COMMIT_SHA: ${{ github.event.sha }}
+ APPVEYOR_TARGET_URL: ${{ github.event.target_url }}
+ APPVEYOR_REPOSITORY: ${{ github.event.repository.full_name }}
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: |
+ echo ${APPVEYOR_TARGET_URL} | sed 's/\/project\//\/api\/projects\//' | xargs -t -n1 curl -s | \
+ jq -c '.build.jobs[] | {target_url: ($target_url + "/job/" + .jobId),
+ context: (.name | sub("^(Environment: )?"; "AppVeyor / ")),
+ state: (.status | sub("queued"; "pending")
+ | sub("starting"; "pending")
+ | sub("running"; "pending")
+ | sub("failed"; "failure")
+ | sub("cancelled"; "error")),
+ description: .status}' \
+ --arg target_url ${APPVEYOR_TARGET_URL} | tee /dev/stderr | parallel --pipe -j 1 -N 1 \
+ gh api --silent --input - repos/${APPVEYOR_REPOSITORY}/statuses/${APPVEYOR_COMMIT_SHA}
libstandaloneengine.a
tests/string
tests/config
-
int
main() {
_Atomic int i = 1;
- i = 0; // Force an atomic-write operation.
+ i = 0; /* Force an atomic-write operation. */
return i;
}
#endif
endif()
# check SSL libraries
-# TODO support GnuTLS
option(CURL_ENABLE_SSL "Enable SSL support" ON)
if(APPLE)
- cmake_dependent_option(CURL_USE_SECTRANSP "enable Apple OS native SSL/TLS" OFF CURL_ENABLE_SSL OFF)
+ cmake_dependent_option(CURL_USE_SECTRANSP "Enable Apple OS native SSL/TLS" OFF CURL_ENABLE_SSL OFF)
endif()
if(WIN32)
- cmake_dependent_option(CURL_USE_SCHANNEL "enable Windows native SSL/TLS" OFF CURL_ENABLE_SSL OFF)
+ cmake_dependent_option(CURL_USE_SCHANNEL "Enable Windows native SSL/TLS" OFF CURL_ENABLE_SSL OFF)
cmake_dependent_option(CURL_WINDOWS_SSPI "Use windows libraries to allow NTLM authentication without OpenSSL" ON
CURL_USE_SCHANNEL OFF)
endif()
cmake_dependent_option(CURL_USE_MBEDTLS "Enable mbedTLS for SSL/TLS" OFF CURL_ENABLE_SSL OFF)
cmake_dependent_option(CURL_USE_BEARSSL "Enable BearSSL for SSL/TLS" OFF CURL_ENABLE_SSL OFF)
-cmake_dependent_option(CURL_USE_WOLFSSL "enable wolfSSL for SSL/TLS" OFF CURL_ENABLE_SSL OFF)
-cmake_dependent_option(CURL_USE_GNUTLS "Enable GNUTLS for SSL/TLS" OFF CURL_ENABLE_SSL OFF)
+cmake_dependent_option(CURL_USE_WOLFSSL "Enable wolfSSL for SSL/TLS" OFF CURL_ENABLE_SSL OFF)
+cmake_dependent_option(CURL_USE_GNUTLS "Enable GNUTLS for SSL/TLS" OFF CURL_ENABLE_SSL OFF)
set(openssl_default ON)
if(WIN32 OR CURL_USE_SECTRANSP OR CURL_USE_SCHANNEL OR CURL_USE_MBEDTLS OR CURL_USE_WOLFSSL)
endif()
endif()
-option(USE_NGHTTP2 "Use Nghttp2 library" OFF)
+option(USE_NGHTTP2 "Use nghttp2 library" OFF)
if(USE_NGHTTP2)
find_package(NGHTTP2 REQUIRED)
include_directories(${NGHTTP2_INCLUDE_DIRS})
## Sponsors
Support this project by becoming a [sponsor](https://curl.se/sponsors.html).
-
typedef ssize_t Curl_bufq_reader(void *reader_ctx, unsigned char *buf, size_t len,
CURLcode *err);
-ssize_t Curl_bufq_slurp(struct bufq *q, Curl_bufq_reader *reader, void *reader_ctx,
+ssize_t Curl_bufq_slurp(struct bufq *q, Curl_bufq_reader *reader, void *reader_ctx,
CURLcode *err);
-
```
`Curl_bufq_slurp()` will invoke the given `reader` callback, passing it its own internal
typedef ssize_t Curl_bufq_writer(void *writer_ctx, const unsigned char *buf, size_t len,
CURLcode *err);
-ssize_t Curl_bufq_pass(struct bufq *q, Curl_bufq_writer *writer, void *writer_ctx,
+ssize_t Curl_bufq_pass(struct bufq *q, Curl_bufq_writer *writer, void *writer_ctx,
CURLcode *err);
```
## empty, full and overflow
-One can ask about the state of a `bufq` with methods such as `Curl_bufq_is_empty(q)`,
+One can ask about the state of a `bufq` with methods such as `Curl_bufq_is_empty(q)`,
`Curl_bufq_is_full(q)`, etc. The amount of data held by a `bufq` is the sum of the data in all its chunks. This is what is reported by `Curl_bufq_len(q)`.
-Note that a `bufq` length and it being "full" are only loosely related. A simple example:
+Note that a `bufq` length and it being "full" are only loosely related. A simple example:
* create a `bufq` with chunk_size=1000 and max_chunks=4.
* write 4000 bytes to it, it will report "full"
* when all `bufq`s are empty, only memory for `max_spare` chunks in the pool is used. Empty `bufq`s will hold no memory.
* the latest spare chunk is the first to be handed out again, no matter which `bufq` needs it. This keeps the footprint of "recently used" memory smaller.
-
-
## Not reproducible
- We may require further work from you who actually see or experience the
+ We may require further work from you who actually see or experience the
problem if we cannot reproduce it and cannot understand it even after having
gotten all the info we need and having studied the source code over again.
# curl connection filters
-Connection filters is a design in the internals of curl, not visible in its public API. They were added
+Connection filters is a design in the internals of curl, not visible in its public API. They were added
in curl v7.xx.x. This document describes the concepts, its high level implementation and the motivations.
## Filters
http://localhost/ conn -> cf-socket
https://curl.se/ conn -> cf-ssl -> cf-socket
Via http proxy tunnel:
- http://localhost/ conn -> cf-http-proxy -> cf-socket
+ http://localhost/ conn -> cf-http-proxy -> cf-socket
https://curl.se/ conn -> cf-ssl -> cf-http-proxy -> cf-socket
Via https proxy tunnel:
- http://localhost/ conn -> cf-http-proxy -> cf-ssl -> cf-socket
+ http://localhost/ conn -> cf-http-proxy -> cf-ssl -> cf-socket
https://curl.se/ conn -> cf-ssl -> cf-http-proxy -> cf-ssl -> cf-socket
Via http proxy tunnel via SOCKS proxy:
- http://localhost/ conn -> cf-http-proxy -> cf-socks -> cf-socket
+ http://localhost/ conn -> cf-http-proxy -> cf-socks -> cf-socket
```
### Connecting/Closing
Each filter does in principle the following:
```
-static CURLcode
+static CURLcode
myfilter_cf_connect(struct Curl_cfilter *cf,
struct Curl_easy *data,
bool *done)
}
/* Let the filters below connect */
result = cf->next->cft->connect(cf->next, data, blocking, done);
- if(result || !*done)
+ if(result || !*done)
return result; /* below errored/not finished yet */
/* MYFILTER CONNECT THINGS */ /* below connected, do out thing */
- Support for systems without 64 bit data types
- NSS
- gskit
-
Create a `Caddyfile` with the following content:
~~~
localhost:7443 {
- respond "Hello, world! you are using {http.request.proto}"
+ respond "Hello, world! you are using {http.request.proto}"
}
~~~
- h2 Upgrade:
- receiving HTTP/1 trailers
- sending HTTP/1 trailers
-
**NOTE**: The file size is not always known prior to download, and for such
files this option has no effect even if the file transfer ends up being larger
-than this given limit.
\ No newline at end of file
+than this given limit.
expands the variable base64 encoded
.RE
.IP
-
.BR curl_ws_meta "(3), " curl_ws_recv "(3), " curl_ws_send "(3), "
.BR curl_easy_init "(3), " CURLOPT_CONNECT_ONLY "(3), "
.BR CURLOPT_WRITEFUNCTION "(3)" CURLOPT_WS_OPTIONS "(3), "
-
.SH "SEE ALSO"
.BR CURLOPT_HSTSREADDATA "(3), " CURLOPT_HSTSWRITEFUNCTION "(3), "
.BR CURLOPT_HSTS "(3), " CURLOPT_HSTS_CTRL "(3), "
-
Returns CURLE_OK
.SH SEE ALSO
.BR CURLOPT_TCP_KEEPALIVE "(3), "
-
CURLOPT_SSL_CIPHER_LIST.3 \
CURLOPT_SSL_CTX_DATA.3 \
CURLOPT_SSL_CTX_FUNCTION.3 \
- CURLOPT_SSL_EC_CURVES.3 \
+ CURLOPT_SSL_EC_CURVES.3 \
CURLOPT_SSL_ENABLE_ALPN.3 \
CURLOPT_SSL_ENABLE_NPN.3 \
CURLOPT_SSL_FALSESTART.3 \
#endif
#endif /* HEADER_CURL_AMIGAOS_H */
-
&n, NULL) : CURLE_UNKNOWN_OPTION;
return (result || n <= 0)? 1 : (size_t)n;
}
-
BEARSSL_ENABLED=1
USE_BEARSSL="yes"
ssl_msg="BearSSL"
- test bearssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
+ test bearssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
], [], -lbearssl)
fi
MBEDTLS_ENABLED=1
USE_MBEDTLS="yes"
ssl_msg="mbedTLS"
- test mbedtls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
+ test mbedtls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
], [], -lmbedx509 -lmbedcrypto)
fi
AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
openssl/pem.h openssl/ssl.h openssl/err.h,
ssl_msg="OpenSSL"
- test openssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
+ test openssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
OPENSSL_ENABLED=1
AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
RUSTLS_ENABLED=1
USE_RUSTLS="yes"
ssl_msg="rustls"
- test rustls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
+ test rustls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
], [], -lpthread -ldl -lm)
fi
AC_MSG_CHECKING([for wolfSSL_Init in -lwolfssl])
AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
+ AC_LANG_PROGRAM([[
/* These aren't needed for detection and confuse WolfSSL.
They are set up properly later if it is detected. */
#undef SIZEOF_LONG
#undef SIZEOF_LONG_LONG
#include <wolfssl/options.h>
#include <wolfssl/ssl.h>
- ]],[[
- return wolfSSL_Init();
- ]])
+ ]],[[
+ return wolfSSL_Init();
+ ]])
],[
AC_MSG_RESULT(yes)
AC_DEFINE(USE_WOLFSSL, 1, [if wolfSSL is enabled])
WOLFSSL_ENABLED=1
USE_WOLFSSL="yes"
ssl_msg="WolfSSL"
- test wolfssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
+ test wolfssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
],
[
AC_MSG_RESULT(no)
# The `sed' statement works as follows:
# - Join \nl-separated lines.
# - Retain only lines that begins with "identifier =".
-# - Replace @...@ sustitutions by shell variable references.
+# - Replace @...@ substitutions by shell variable references.
# - Turn these lines into shell variable assignments.
get_make_vars()
VC*/lib/*curl.vcproj.dist
VC*/src/*curl.vcxproj.dist
VC*/lib/*curl.vcxproj.dist
-
void varcleanup(struct GlobalConfig *global);
#endif /* HEADER_CURL_VAR_H */
-
The HTTP server supports listening on a Unix domain socket, the default
location is 'http.sock'.
-
+
For HTTP/2 and HTTP/3 testing an installed `nghttpx` is used. HTTP/3
tests check if nghttpx supports the protocol. To override the nghttpx
used, set the environment variable `NGHTTPX`. The default can also be
All logs are generated in the log/ subdirectory (it is emptied first in the
runtests.pl script). They remain in there after a test run.
-
+
### Log Verbosity
A curl build with `--enable-debug` offers more verbose output in the logs.
with `curl -v`. While a curl debug built is
***not suitable for production***, it is often helpful in tracking down
problems.
-
+
Sometimes, one needs detailed logging of operations, but does not want
to drown in output. The newly introduced *connection filters* allows one to
dynamically increase log verbosity for a particular *filter type*. Example:
-
+
CURL_DEBUG=ssl curl -v https://curl.se
will make the `ssl` connection filter log more details. One may do that for
- every filter type and also use a combination of names, separated by `,` or
+ every filter type and also use a combination of names, separated by `,` or
space.
-
+
CURL_DEBUG=ssl,http/2 curl -v https://curl.se
The order of filter type names is not relevant. Names used here are
case insensitive. Note that these names are implementation internals and
subject to change.
-
+
Some, likely stable names are `tcp`, `ssl`, `http/2`. For a current list,
one may search the sources for `struct Curl_cftype` definitions and find
the names there. Also, some filters are only available with certain build
options, of course.
-
+
### Test input files
All test cases are put in the `data/` subdirectory. Each test is stored in
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
-#
+#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
-#
+#
# SPDX-License-Identifier: curl
#
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
-#
+#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
-#
+#
# SPDX-License-Identifier: curl
#
#
count = int(metafunc.config.getoption("repeat"))
metafunc.fixturenames.append('tmp_ct')
metafunc.parametrize('repeat', range(count))
-
-
elsif(! $seen_return) {
if(/CURLOPT_URL/) {
# URL is passed in as argument or by global
- my $var = shift @urlvars;
+ my $var = shift @urlvars;
s/\"[^\"]*\"/$var/;
}
- s/\bhnd\b/curl/;
+ s/\bhnd\b/curl/;
# Convert to macro wrapper
s/curl_easy_setopt/test_setopt/;
- if(/curl_easy_perform/) {
- s/\bret\b/res/;
- push @code, $_;
- push @code, "test_cleanup:\n";
- }
- else {
- push @code, $_;
- }
+ if(/curl_easy_perform/) {
+ s/\bret\b/res/;
+ push @code, $_;
+ push @code, "test_cleanup:\n";
+ }
+ else {
+ push @code, $_;
+ }
}
}
--data-urlencode
</name>
<command>
-http://%HOSTIP:%HTTPPORT/%TESTNUMBER --data-urlencode "my name is moo[]" --data-urlencode "y e s=s_i_r" --data-urlencode "v_alue@%LOGDIR/%TESTNUMBER.txt" --data-urlencode @%LOGDIR/%TESTNUMBER.txt
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER --data-urlencode "my name is moo[]" --data-urlencode "y e s=s_i_r" --data-urlencode "v_alue@%LOGDIR/%TESTNUMBER.txt" --data-urlencode @%LOGDIR/%TESTNUMBER.txt
</command>
<file name="%LOGDIR/%TESTNUMBER.txt">
content to _?!#$'|<>
X-Y range on a file:// URL to stdout
</name>
<command option="no-include">
--r 1-4 file://localhost%FILE_PWD/%LOGDIR/test%TESTNUMBER.txt
+-r 1-4 file://localhost%FILE_PWD/%LOGDIR/test%TESTNUMBER.txt
</command>
<file name="%LOGDIR/test%TESTNUMBER.txt">
1234567890
0-Y range on a file:// URL to stdout
</name>
<command option="no-include">
--r 0-3 file://localhost%FILE_PWD/%LOGDIR/test%TESTNUMBER.txt
+-r 0-3 file://localhost%FILE_PWD/%LOGDIR/test%TESTNUMBER.txt
</command>
<file name="%LOGDIR/test%TESTNUMBER.txt">
1234567890
X-X range on a file:// URL to stdout
</name>
<command option="no-include">
--r 4-4 file://localhost%FILE_PWD/%LOGDIR/test%TESTNUMBER.txt
+-r 4-4 file://localhost%FILE_PWD/%LOGDIR/test%TESTNUMBER.txt
</command>
<file name="%LOGDIR/test%TESTNUMBER.txt">
1234567890
X- range on a file:// URL to stdout
</name>
<command option="no-include">
--r 7- file://localhost%FILE_PWD/%LOGDIR/test%TESTNUMBER.txt
+-r 7- file://localhost%FILE_PWD/%LOGDIR/test%TESTNUMBER.txt
</command>
<file name="%LOGDIR/test%TESTNUMBER.txt">
1234567890
-Y range on a file:// URL to stdout
</name>
<command option="no-include">
--r -9 file://localhost%FILE_PWD/%LOGDIR/test%TESTNUMBER.txt
+-r -9 file://localhost%FILE_PWD/%LOGDIR/test%TESTNUMBER.txt
</command>
<file name="%LOGDIR/test%TESTNUMBER.txt">
1234567890
none
</server>
<name>
-curl --manual
+curl --manual
</name>
<command>
--manual
# This range value is 2**32+7, which will be truncated to the valid value 7
# if the large file support is not working correctly
<command>
--r 4294967303- file://localhost%FILE_PWD/%LOGDIR/test%TESTNUMBER.txt
+-r 4294967303- file://localhost%FILE_PWD/%LOGDIR/test%TESTNUMBER.txt
</command>
<file name="%LOGDIR/test%TESTNUMBER.txt">
1234567890
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
</setenv>
<command>
-http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm -L -d "stuff to send away"
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm -L -d "stuff to send away"
</command>
<precheck>
chkhostname curlhost
</data1>
# we use skip to make the test server never read the full payload off
-# the socket and instead return the response at once
+# the socket and instead return the response at once
<servercmd>
skip: 1053700
</servercmd>
</data1>
# we use skip to make the test server never read the full payload off
-# the socket and instead return the response at once
+# the socket and instead return the response at once
<servercmd>
skip: 100
</servercmd>
</data1>
# we use skip to make the test server never read the full payload off
-# the socket and instead return the response at once
+# the socket and instead return the response at once
<servercmd>
skip: 100
</servercmd>
# Verify data after the test has been "shot"
<verify>
-# curl: (3) [globbing] bad range in column
+# curl: (3) [globbing] bad range in column
<errorcode>
3
</errorcode>
crypto
</features>
<name>
-HTTP GET with --anyauth with two URLs (picking Digest)
+HTTP GET with --anyauth with two URLs (picking Digest)
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --anyauth http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001
proxy
</features>
<name>
-Provide illegal proxy name
+Provide illegal proxy name
</name>
<command>
--proxy "http://a:b@/x" http://%HOSTIP:%NOLISTENPORT
ftp
</server>
<name>
-FTP URL with ?-letters in username and password
+FTP URL with ?-letters in username and password
</name>
<command>
"ftp://use%3fr:pass%3fword@%HOSTIP:%FTPPORT/%TESTNUMBER"
ftp
</server>
<name>
-FTP timed conditioned get file with identical time stamp
+FTP timed conditioned get file with identical time stamp
</name>
<command>
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -z "2004 jan 1 12:12:12 UTC"
</name>
# first URL then proxy
<command>
-ftp://www.example.com/moo/%TESTNUMBER http://%HOSTIP:%HTTPPORT
+ftp://www.example.com/moo/%TESTNUMBER http://%HOSTIP:%HTTPPORT
</command>
</client>
HTTP GET via SOCKS5 set with --proxy
</name>
<command>
-http://%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy socks5://%HOSTIP:%SOCKSPORT
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy socks5://%HOSTIP:%SOCKSPORT
</command>
</client>
FTP fetch with --proxy set to socks5://
</name>
<command>
-ftp://%HOSTIP:%FTPPORT/%TESTNUMBER --proxy socks5://%HOSTIP:%SOCKSPORT
+ftp://%HOSTIP:%FTPPORT/%TESTNUMBER --proxy socks5://%HOSTIP:%SOCKSPORT
</command>
</client>
FTP fetch with --proxy set to socks5:// and with --connect-to
</name>
<command>
-ftp://ftp.example.com/%TESTNUMBER --connect-to ::%HOSTIP:%FTPPORT --proxy socks5://%HOSTIP:%SOCKSPORT
+ftp://ftp.example.com/%TESTNUMBER --connect-to ::%HOSTIP:%FTPPORT --proxy socks5://%HOSTIP:%SOCKSPORT
</command>
</client>
FTP fetch with --proxy set to http:// and with --connect-to
</name>
<command>
-ftp://ftp.example.com.%TESTNUMBER/%TESTNUMBER --connect-to ::connect.example.com.%TESTNUMBER:%FTPPORT --proxytunnel --proxy http://%HOSTIP:%PROXYPORT
+ftp://ftp.example.com.%TESTNUMBER/%TESTNUMBER --connect-to ::connect.example.com.%TESTNUMBER:%FTPPORT --proxytunnel --proxy http://%HOSTIP:%PROXYPORT
</command>
</client>
FTP fetch with --preproxy, --proxy and --connect-to
</name>
<command>
-ftp://ftp.example.com.%TESTNUMBER/%TESTNUMBER --connect-to ::connect.example.com.%TESTNUMBER:%FTPPORT --proxytunnel --proxy %HOSTIP:%PROXYPORT --preproxy socks5://%HOSTIP:%SOCKSPORT
+ftp://ftp.example.com.%TESTNUMBER/%TESTNUMBER --connect-to ::connect.example.com.%TESTNUMBER:%FTPPORT --proxytunnel --proxy %HOSTIP:%PROXYPORT --preproxy socks5://%HOSTIP:%SOCKSPORT
</command>
</client>
HTTP GET with IPv6 numerical via SOCKS5h
</name>
<command>
-http://[2200::33]:%HTTPPORT/%TESTNUMBER --proxy socks5h://%HOSTIP:%SOCKSPORT
+http://[2200::33]:%HTTPPORT/%TESTNUMBER --proxy socks5h://%HOSTIP:%SOCKSPORT
</command>
</client>
HTTP GET with IPv4 numerical via SOCKS5h
</name>
<command>
-http://12.34.56.78:%HTTPPORT/%TESTNUMBER --proxy socks5h://%HOSTIP:%SOCKSPORT
+http://12.34.56.78:%HTTPPORT/%TESTNUMBER --proxy socks5h://%HOSTIP:%SOCKSPORT
</command>
</client>
/^<([a-zA-Z0-9._%+-]+)\@(([a-zA-Z0-9-]+)\.)+([a-zA-Z]{2,4})>$/) ||
($smtputf8 && $to =~
/^<([a-zA-Z0-9\x{80}-\x{ff}._%+-]+)\@(([a-zA-Z0-9\x{80}-\x{ff}-]+)\.)+([a-zA-Z]{2,4})>$/)) {
- sendcontrol "250 Recipient OK\r\n";
+ sendcontrol "250 Recipient OK\r\n";
}
else {
sendcontrol "501 Invalid address\r\n";
# This is a built-in fake-message list
my @data = (
"1 100\r\n",
- "2 4294967400\r\n", # > 4 GB
+ "2 4294967400\r\n", # > 4 GB
"3 200\r\n",
);
# SPDX-License-Identifier: curl
config.ini
-gen
\ No newline at end of file
+gen
ws-data
ws-pingpong
h2-upgrade-extreme
-tls-session-reuse
\ No newline at end of file
+tls-session-reuse
assert nghttpx.start()
yield nghttpx
nghttpx.stop()
-
pytest
cryptography
multipart
-websockets
\ No newline at end of file
+websockets
log.debug(f'request {idx} connected')
# this should take `count` seconds to retrieve
assert r.duration >= timedelta(seconds=count)
-
-
r.check_response(http_status=200, count=1)
# check that we did a downgrade
assert r.stats[0]['http_version'] == '1.1', r.dump_logs()
-
r.check_response(count=1, http_status=None, exitcode=False)
assert r.stats[0]['time_connect'] == 0 # no one should have listened
assert r.stats[0]['time_appconnect'] == 0 # did not happen either
-
'--cacert', env.ca.cert_file,
'--request', 'PUT',
'--digest', '--user', 'test:test',
- '--data-binary', f'@{fdata}',
+ '--data-binary', f'@{fdata}',
'--url', url,
])
assert r.exit_code == 0, r.dump_logs()
assert r.total_connects > 1, r.dump_logs()
else:
assert r.total_connects == 1, r.dump_logs()
-
url = f'https://{env.domain1}:{env.https_port}/push/data1'
r = curl.http_download(urls=[url], alpn_proto='h2', with_stats=False,
with_headers=True)
- r.check_exit_code(0)
+ r.check_exit_code(0)
assert len(r.responses) == 2, f'{r.responses}'
assert r.responses[0]['status'] == 103, f'{r.responses}'
assert 'link' in r.responses[0]['header'], f'{r.responses[0]}'
assert r.total_connects == 2
else:
assert r.total_connects == 2
-
protocol='HTTP/2' if proto == 'h2' else 'HTTP/1.1')
assert self.get_tunnel_proto_used(r) == 'HTTP/2' \
if tunnel == 'h2' else 'HTTP/1.1'
-
if m is not None:
found_tcp = True
if found_tcp:
- assert False, f'TCP filter appears in trace "all,-tcp": {r.stderr}'
\ No newline at end of file
+ assert False, f'TCP filter appears in trace "all,-tcp": {r.stderr}'
pytest.exit(f"`make`in {client_dir} failed:\n{p.stderr}")
return False
return True
-
#
# SPDX-License-Identifier: curl
-*.slo
\ No newline at end of file
+*.slo
time.sleep(.1)
log.error(f"Server still not responding after {timeout}")
return False
-
for s in socks:
s.close()
return ports
-
-
lib3101_SOURCES = lib3101.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib3101_LDADD = $(TESTUTIL_LIBS)
-
curl_global_cleanup();
return (int)res;
}
-
curl_global_cleanup();
return 0;
}
-
tftpd
socksd
disabled
-mqttd
\ No newline at end of file
+mqttd
rem *
rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
rem * KIND, either express or implied.
-rem *
+rem *
rem * SPDX-License-Identifier: curl
rem *
rem ***************************************************************************
)
echo %MACRO_NAME% = \> %OUTFILE%
-for %%i in (%*) do echo %DIROBJ%/%%i \>> %OUTFILE%
-echo. >> %OUTFILE%
+for %%i in (%*) do echo %DIROBJ%/%%i \>> %OUTFILE%
+echo. >> %OUTFILE%
:END
rem *
rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
rem * KIND, either express or implied.
-rem *
+rem *
rem * SPDX-License-Identifier: curl
rem *
rem ***************************************************************************
ECHO Error: Can't find `nmake.exe` - be sure to run this script from within a Developer Command-Prompt
ECHO.
) ELSE (
- nmake /f Makefile.vc mode=static DEBUG=yes GEN_PDB=yes
+ nmake /f Makefile.vc mode=static DEBUG=yes GEN_PDB=yes
IF %ERRORLEVEL% NEQ 0 (
ECHO "Error: Build Failed"
)