mirror of
https://github.com/curl/curl.git
synced 2025-09-11 06:32:41 +03:00
tidy-up: mostly whitespace nits
- 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
This commit is contained in:
parent
63f23fafc9
commit
ce3dce9015
4
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
4
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
|
@ -31,9 +31,9 @@ body:
|
||||||
id: expected-behaviour
|
id: expected-behaviour
|
||||||
attributes:
|
attributes:
|
||||||
label: I expected the following
|
label: I expected the following
|
||||||
validations:
|
validations:
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: version
|
id: version
|
||||||
attributes:
|
attributes:
|
||||||
|
|
1
.github/scripts/cleanspell.pl
vendored
1
.github/scripts/cleanspell.pl
vendored
|
@ -77,4 +77,3 @@ while(<F>) {
|
||||||
}
|
}
|
||||||
close(F);
|
close(F);
|
||||||
close(O);
|
close(O);
|
||||||
|
|
||||||
|
|
82
.github/workflows/appveyor-status.yml
vendored
82
.github/workflows/appveyor-status.yml
vendored
|
@ -1,41 +1,41 @@
|
||||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: curl
|
# SPDX-License-Identifier: curl
|
||||||
|
|
||||||
name: AppVeyor Status Report
|
name: AppVeyor Status Report
|
||||||
|
|
||||||
on:
|
on:
|
||||||
status
|
status
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.event.sha }}-${{ github.event.target_url }}
|
group: ${{ github.workflow }}-${{ github.event.sha }}-${{ github.event.target_url }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
permissions: {}
|
permissions: {}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
split:
|
split:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: ${{ github.event.sender.login == 'appveyor[bot]' }}
|
if: ${{ github.event.sender.login == 'appveyor[bot]' }}
|
||||||
permissions:
|
permissions:
|
||||||
statuses: write
|
statuses: write
|
||||||
steps:
|
steps:
|
||||||
- name: Create individual AppVeyor build statuses
|
- name: Create individual AppVeyor build statuses
|
||||||
if: ${{ github.event.sha && github.event.target_url }}
|
if: ${{ github.event.sha && github.event.target_url }}
|
||||||
env:
|
env:
|
||||||
APPVEYOR_COMMIT_SHA: ${{ github.event.sha }}
|
APPVEYOR_COMMIT_SHA: ${{ github.event.sha }}
|
||||||
APPVEYOR_TARGET_URL: ${{ github.event.target_url }}
|
APPVEYOR_TARGET_URL: ${{ github.event.target_url }}
|
||||||
APPVEYOR_REPOSITORY: ${{ github.event.repository.full_name }}
|
APPVEYOR_REPOSITORY: ${{ github.event.repository.full_name }}
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
echo ${APPVEYOR_TARGET_URL} | sed 's/\/project\//\/api\/projects\//' | xargs -t -n1 curl -s | \
|
echo ${APPVEYOR_TARGET_URL} | sed 's/\/project\//\/api\/projects\//' | xargs -t -n1 curl -s | \
|
||||||
jq -c '.build.jobs[] | {target_url: ($target_url + "/job/" + .jobId),
|
jq -c '.build.jobs[] | {target_url: ($target_url + "/job/" + .jobId),
|
||||||
context: (.name | sub("^(Environment: )?"; "AppVeyor / ")),
|
context: (.name | sub("^(Environment: )?"; "AppVeyor / ")),
|
||||||
state: (.status | sub("queued"; "pending")
|
state: (.status | sub("queued"; "pending")
|
||||||
| sub("starting"; "pending")
|
| sub("starting"; "pending")
|
||||||
| sub("running"; "pending")
|
| sub("running"; "pending")
|
||||||
| sub("failed"; "failure")
|
| sub("failed"; "failure")
|
||||||
| sub("cancelled"; "error")),
|
| sub("cancelled"; "error")),
|
||||||
description: .status}' \
|
description: .status}' \
|
||||||
--arg target_url ${APPVEYOR_TARGET_URL} | tee /dev/stderr | parallel --pipe -j 1 -N 1 \
|
--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}
|
gh api --silent --input - repos/${APPVEYOR_REPOSITORY}/statuses/${APPVEYOR_COMMIT_SHA}
|
||||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -65,4 +65,3 @@ curl_fuzzer_seed_corpus.zip
|
||||||
libstandaloneengine.a
|
libstandaloneengine.a
|
||||||
tests/string
|
tests/string
|
||||||
tests/config
|
tests/config
|
||||||
|
|
||||||
|
|
|
@ -510,7 +510,7 @@ main() {
|
||||||
int
|
int
|
||||||
main() {
|
main() {
|
||||||
_Atomic int i = 1;
|
_Atomic int i = 1;
|
||||||
i = 0; // Force an atomic-write operation.
|
i = 0; /* Force an atomic-write operation. */
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -391,21 +391,20 @@ if(WIN32)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# check SSL libraries
|
# check SSL libraries
|
||||||
# TODO support GnuTLS
|
|
||||||
option(CURL_ENABLE_SSL "Enable SSL support" ON)
|
option(CURL_ENABLE_SSL "Enable SSL support" ON)
|
||||||
|
|
||||||
if(APPLE)
|
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()
|
endif()
|
||||||
if(WIN32)
|
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
|
cmake_dependent_option(CURL_WINDOWS_SSPI "Use windows libraries to allow NTLM authentication without OpenSSL" ON
|
||||||
CURL_USE_SCHANNEL OFF)
|
CURL_USE_SCHANNEL OFF)
|
||||||
endif()
|
endif()
|
||||||
cmake_dependent_option(CURL_USE_MBEDTLS "Enable mbedTLS for SSL/TLS" OFF CURL_ENABLE_SSL OFF)
|
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_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_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_GNUTLS "Enable GNUTLS for SSL/TLS" OFF CURL_ENABLE_SSL OFF)
|
||||||
|
|
||||||
set(openssl_default ON)
|
set(openssl_default ON)
|
||||||
if(WIN32 OR CURL_USE_SECTRANSP OR CURL_USE_SCHANNEL OR CURL_USE_MBEDTLS OR CURL_USE_WOLFSSL)
|
if(WIN32 OR CURL_USE_SECTRANSP OR CURL_USE_SCHANNEL OR CURL_USE_MBEDTLS OR CURL_USE_WOLFSSL)
|
||||||
|
@ -607,7 +606,7 @@ if(USE_OPENSSL OR USE_WOLFSSL)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(USE_NGHTTP2 "Use Nghttp2 library" OFF)
|
option(USE_NGHTTP2 "Use nghttp2 library" OFF)
|
||||||
if(USE_NGHTTP2)
|
if(USE_NGHTTP2)
|
||||||
find_package(NGHTTP2 REQUIRED)
|
find_package(NGHTTP2 REQUIRED)
|
||||||
include_directories(${NGHTTP2_INCLUDE_DIRS})
|
include_directories(${NGHTTP2_INCLUDE_DIRS})
|
||||||
|
|
|
@ -66,4 +66,3 @@ Thank you to all our backers! 🙏 [Become a backer](https://opencollective.com/
|
||||||
## Sponsors
|
## Sponsors
|
||||||
|
|
||||||
Support this project by becoming a [sponsor](https://curl.se/sponsors.html).
|
Support this project by becoming a [sponsor](https://curl.se/sponsors.html).
|
||||||
|
|
||||||
|
|
11
docs/BUFQ.md
11
docs/BUFQ.md
|
@ -28,9 +28,8 @@ To pass data into a `bufq` without an extra copy, read callbacks can be used.
|
||||||
typedef ssize_t Curl_bufq_reader(void *reader_ctx, unsigned char *buf, size_t len,
|
typedef ssize_t Curl_bufq_reader(void *reader_ctx, unsigned char *buf, size_t len,
|
||||||
CURLcode *err);
|
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);
|
CURLcode *err);
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
`Curl_bufq_slurp()` will invoke the given `reader` callback, passing it its own internal
|
`Curl_bufq_slurp()` will invoke the given `reader` callback, passing it its own internal
|
||||||
|
@ -44,7 +43,7 @@ The analog mechanism for write out buffer data is:
|
||||||
typedef ssize_t Curl_bufq_writer(void *writer_ctx, const unsigned char *buf, size_t len,
|
typedef ssize_t Curl_bufq_writer(void *writer_ctx, const unsigned char *buf, size_t len,
|
||||||
CURLcode *err);
|
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);
|
CURLcode *err);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -106,10 +105,10 @@ If a `bufq` is created with a `bufc_pool`, the no longer used chunks are returne
|
||||||
|
|
||||||
## empty, full and overflow
|
## 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)`.
|
`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.
|
* create a `bufq` with chunk_size=1000 and max_chunks=4.
|
||||||
* write 4000 bytes to it, it will report "full"
|
* write 4000 bytes to it, it will report "full"
|
||||||
|
@ -140,5 +139,3 @@ A pool can be shared between many `bufq`s, as long as all of them operate in the
|
||||||
|
|
||||||
* when all `bufq`s are empty, only memory for `max_spare` chunks in the pool is used. Empty `bufq`s will hold no memory.
|
* 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.
|
* 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.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -199,7 +199,7 @@
|
||||||
|
|
||||||
## Not reproducible
|
## 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
|
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.
|
gotten all the info we need and having studied the source code over again.
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# curl connection filters
|
# 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.
|
in curl v7.xx.x. This document describes the concepts, its high level implementation and the motivations.
|
||||||
|
|
||||||
## Filters
|
## Filters
|
||||||
|
@ -34,13 +34,13 @@ Direct:
|
||||||
http://localhost/ conn -> cf-socket
|
http://localhost/ conn -> cf-socket
|
||||||
https://curl.se/ conn -> cf-ssl -> cf-socket
|
https://curl.se/ conn -> cf-ssl -> cf-socket
|
||||||
Via http proxy tunnel:
|
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
|
https://curl.se/ conn -> cf-ssl -> cf-http-proxy -> cf-socket
|
||||||
Via https proxy tunnel:
|
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
|
https://curl.se/ conn -> cf-ssl -> cf-http-proxy -> cf-ssl -> cf-socket
|
||||||
Via http proxy tunnel via SOCKS proxy:
|
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
|
### Connecting/Closing
|
||||||
|
@ -50,7 +50,7 @@ Before `Curl_easy` can send the request, the connection needs to be established.
|
||||||
Each filter does in principle the following:
|
Each filter does in principle the following:
|
||||||
|
|
||||||
```
|
```
|
||||||
static CURLcode
|
static CURLcode
|
||||||
myfilter_cf_connect(struct Curl_cfilter *cf,
|
myfilter_cf_connect(struct Curl_cfilter *cf,
|
||||||
struct Curl_easy *data,
|
struct Curl_easy *data,
|
||||||
bool *done)
|
bool *done)
|
||||||
|
@ -63,7 +63,7 @@ myfilter_cf_connect(struct Curl_cfilter *cf,
|
||||||
}
|
}
|
||||||
/* Let the filters below connect */
|
/* Let the filters below connect */
|
||||||
result = cf->next->cft->connect(cf->next, data, blocking, done);
|
result = cf->next->cft->connect(cf->next, data, blocking, done);
|
||||||
if(result || !*done)
|
if(result || !*done)
|
||||||
return result; /* below errored/not finished yet */
|
return result; /* below errored/not finished yet */
|
||||||
|
|
||||||
/* MYFILTER CONNECT THINGS */ /* below connected, do out thing */
|
/* MYFILTER CONNECT THINGS */ /* below connected, do out thing */
|
||||||
|
|
|
@ -46,4 +46,3 @@ curl will remove the support for space-separated names in July 2024.
|
||||||
- Support for systems without 64 bit data types
|
- Support for systems without 64 bit data types
|
||||||
- NSS
|
- NSS
|
||||||
- gskit
|
- gskit
|
||||||
|
|
||||||
|
|
|
@ -340,7 +340,7 @@ should be either in your PATH or your current directory.
|
||||||
Create a `Caddyfile` with the following content:
|
Create a `Caddyfile` with the following content:
|
||||||
~~~
|
~~~
|
||||||
localhost:7443 {
|
localhost:7443 {
|
||||||
respond "Hello, world! you are using {http.request.proto}"
|
respond "Hello, world! you are using {http.request.proto}"
|
||||||
}
|
}
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
|
|
@ -67,4 +67,3 @@ still need attention and verification include:
|
||||||
- h2 Upgrade:
|
- h2 Upgrade:
|
||||||
- receiving HTTP/1 trailers
|
- receiving HTTP/1 trailers
|
||||||
- sending HTTP/1 trailers
|
- sending HTTP/1 trailers
|
||||||
|
|
||||||
|
|
|
@ -20,4 +20,4 @@ gigabytes. Examples: 200K, 3m and 1G. (Added in 7.58.0)
|
||||||
|
|
||||||
**NOTE**: The file size is not always known prior to download, and for such
|
**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
|
files this option has no effect even if the file transfer ends up being larger
|
||||||
than this given limit.
|
than this given limit.
|
||||||
|
|
|
@ -54,4 +54,3 @@ shows the content URL (percent) encoded.
|
||||||
expands the variable base64 encoded
|
expands the variable base64 encoded
|
||||||
.RE
|
.RE
|
||||||
.IP
|
.IP
|
||||||
|
|
||||||
|
|
|
@ -60,4 +60,3 @@ int main(void)
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -112,4 +112,3 @@ change API, ABI and behavior before this "goes live".
|
||||||
.BR curl_ws_meta "(3), " curl_ws_recv "(3), " curl_ws_send "(3), "
|
.BR curl_ws_meta "(3), " curl_ws_recv "(3), " curl_ws_send "(3), "
|
||||||
.BR curl_easy_init "(3), " CURLOPT_CONNECT_ONLY "(3), "
|
.BR curl_easy_init "(3), " CURLOPT_CONNECT_ONLY "(3), "
|
||||||
.BR CURLOPT_WRITEFUNCTION "(3)" CURLOPT_WS_OPTIONS "(3), "
|
.BR CURLOPT_WRITEFUNCTION "(3)" CURLOPT_WS_OPTIONS "(3), "
|
||||||
|
|
||||||
|
|
|
@ -86,4 +86,3 @@ This returns CURLE_OK.
|
||||||
.SH "SEE ALSO"
|
.SH "SEE ALSO"
|
||||||
.BR CURLOPT_HSTSREADDATA "(3), " CURLOPT_HSTSWRITEFUNCTION "(3), "
|
.BR CURLOPT_HSTSREADDATA "(3), " CURLOPT_HSTSWRITEFUNCTION "(3), "
|
||||||
.BR CURLOPT_HSTS "(3), " CURLOPT_HSTS_CTRL "(3), "
|
.BR CURLOPT_HSTS "(3), " CURLOPT_HSTS_CTRL "(3), "
|
||||||
|
|
||||||
|
|
|
@ -80,4 +80,3 @@ Added in 7.62.0
|
||||||
Returns CURLE_OK
|
Returns CURLE_OK
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR CURLOPT_TCP_KEEPALIVE "(3), "
|
.BR CURLOPT_TCP_KEEPALIVE "(3), "
|
||||||
|
|
||||||
|
|
|
@ -348,7 +348,7 @@ man_MANS = \
|
||||||
CURLOPT_SSL_CIPHER_LIST.3 \
|
CURLOPT_SSL_CIPHER_LIST.3 \
|
||||||
CURLOPT_SSL_CTX_DATA.3 \
|
CURLOPT_SSL_CTX_DATA.3 \
|
||||||
CURLOPT_SSL_CTX_FUNCTION.3 \
|
CURLOPT_SSL_CTX_FUNCTION.3 \
|
||||||
CURLOPT_SSL_EC_CURVES.3 \
|
CURLOPT_SSL_EC_CURVES.3 \
|
||||||
CURLOPT_SSL_ENABLE_ALPN.3 \
|
CURLOPT_SSL_ENABLE_ALPN.3 \
|
||||||
CURLOPT_SSL_ENABLE_NPN.3 \
|
CURLOPT_SSL_ENABLE_NPN.3 \
|
||||||
CURLOPT_SSL_FALSESTART.3 \
|
CURLOPT_SSL_FALSESTART.3 \
|
||||||
|
|
|
@ -39,4 +39,3 @@ void Curl_amiga_cleanup(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* HEADER_CURL_AMIGAOS_H */
|
#endif /* HEADER_CURL_AMIGAOS_H */
|
||||||
|
|
||||||
|
|
|
@ -646,4 +646,3 @@ size_t Curl_conn_get_max_concurrent(struct Curl_easy *data,
|
||||||
&n, NULL) : CURLE_UNKNOWN_OPTION;
|
&n, NULL) : CURLE_UNKNOWN_OPTION;
|
||||||
return (result || n <= 0)? 1 : (size_t)n;
|
return (result || n <= 0)? 1 : (size_t)n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1446,4 +1446,3 @@ CURLcode Curl_conn_setup(struct Curl_easy *data,
|
||||||
out:
|
out:
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -421,4 +421,3 @@ CURLcode Curl_read(struct Curl_easy *data, /* transfer */
|
||||||
out:
|
out:
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ if test "x$OPT_BEARSSL" != xno; then
|
||||||
BEARSSL_ENABLED=1
|
BEARSSL_ENABLED=1
|
||||||
USE_BEARSSL="yes"
|
USE_BEARSSL="yes"
|
||||||
ssl_msg="BearSSL"
|
ssl_msg="BearSSL"
|
||||||
test bearssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
|
test bearssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
|
||||||
], [], -lbearssl)
|
], [], -lbearssl)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ if test "x$OPT_MBEDTLS" != xno; then
|
||||||
MBEDTLS_ENABLED=1
|
MBEDTLS_ENABLED=1
|
||||||
USE_MBEDTLS="yes"
|
USE_MBEDTLS="yes"
|
||||||
ssl_msg="mbedTLS"
|
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)
|
], [], -lmbedx509 -lmbedcrypto)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -226,7 +226,7 @@ if test "x$OPT_OPENSSL" != xno; then
|
||||||
AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
|
AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
|
||||||
openssl/pem.h openssl/ssl.h openssl/err.h,
|
openssl/pem.h openssl/ssl.h openssl/err.h,
|
||||||
ssl_msg="OpenSSL"
|
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
|
OPENSSL_ENABLED=1
|
||||||
AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
|
AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,7 @@ if test "x$OPT_RUSTLS" != xno; then
|
||||||
RUSTLS_ENABLED=1
|
RUSTLS_ENABLED=1
|
||||||
USE_RUSTLS="yes"
|
USE_RUSTLS="yes"
|
||||||
ssl_msg="rustls"
|
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)
|
], [], -lpthread -ldl -lm)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -90,16 +90,16 @@ if test "x$OPT_WOLFSSL" != xno; then
|
||||||
|
|
||||||
AC_MSG_CHECKING([for wolfSSL_Init in -lwolfssl])
|
AC_MSG_CHECKING([for wolfSSL_Init in -lwolfssl])
|
||||||
AC_LINK_IFELSE([
|
AC_LINK_IFELSE([
|
||||||
AC_LANG_PROGRAM([[
|
AC_LANG_PROGRAM([[
|
||||||
/* These aren't needed for detection and confuse WolfSSL.
|
/* These aren't needed for detection and confuse WolfSSL.
|
||||||
They are set up properly later if it is detected. */
|
They are set up properly later if it is detected. */
|
||||||
#undef SIZEOF_LONG
|
#undef SIZEOF_LONG
|
||||||
#undef SIZEOF_LONG_LONG
|
#undef SIZEOF_LONG_LONG
|
||||||
#include <wolfssl/options.h>
|
#include <wolfssl/options.h>
|
||||||
#include <wolfssl/ssl.h>
|
#include <wolfssl/ssl.h>
|
||||||
]],[[
|
]],[[
|
||||||
return wolfSSL_Init();
|
return wolfSSL_Init();
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
AC_DEFINE(USE_WOLFSSL, 1, [if wolfSSL is enabled])
|
AC_DEFINE(USE_WOLFSSL, 1, [if wolfSSL is enabled])
|
||||||
|
@ -107,7 +107,7 @@ if test "x$OPT_WOLFSSL" != xno; then
|
||||||
WOLFSSL_ENABLED=1
|
WOLFSSL_ENABLED=1
|
||||||
USE_WOLFSSL="yes"
|
USE_WOLFSSL="yes"
|
||||||
ssl_msg="WolfSSL"
|
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)
|
AC_MSG_RESULT(no)
|
||||||
|
|
|
@ -266,7 +266,7 @@ versioned_copy()
|
||||||
# The `sed' statement works as follows:
|
# The `sed' statement works as follows:
|
||||||
# - Join \nl-separated lines.
|
# - Join \nl-separated lines.
|
||||||
# - Retain only lines that begins with "identifier =".
|
# - 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.
|
# - Turn these lines into shell variable assignments.
|
||||||
|
|
||||||
get_make_vars()
|
get_make_vars()
|
||||||
|
|
1
projects/Windows/.gitignore
vendored
1
projects/Windows/.gitignore
vendored
|
@ -6,4 +6,3 @@ VC*/src/*curl.vcproj.dist
|
||||||
VC*/lib/*curl.vcproj.dist
|
VC*/lib/*curl.vcproj.dist
|
||||||
VC*/src/*curl.vcxproj.dist
|
VC*/src/*curl.vcxproj.dist
|
||||||
VC*/lib/*curl.vcxproj.dist
|
VC*/lib/*curl.vcxproj.dist
|
||||||
|
|
||||||
|
|
|
@ -45,4 +45,3 @@ ParameterError varexpand(struct GlobalConfig *global,
|
||||||
void varcleanup(struct GlobalConfig *global);
|
void varcleanup(struct GlobalConfig *global);
|
||||||
|
|
||||||
#endif /* HEADER_CURL_VAR_H */
|
#endif /* HEADER_CURL_VAR_H */
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ SPDX-License-Identifier: curl
|
||||||
|
|
||||||
The HTTP server supports listening on a Unix domain socket, the default
|
The HTTP server supports listening on a Unix domain socket, the default
|
||||||
location is 'http.sock'.
|
location is 'http.sock'.
|
||||||
|
|
||||||
For HTTP/2 and HTTP/3 testing an installed `nghttpx` is used. HTTP/3
|
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
|
tests check if nghttpx supports the protocol. To override the nghttpx
|
||||||
used, set the environment variable `NGHTTPX`. The default can also be
|
used, set the environment variable `NGHTTPX`. The default can also be
|
||||||
|
@ -158,7 +158,7 @@ SPDX-License-Identifier: curl
|
||||||
|
|
||||||
All logs are generated in the log/ subdirectory (it is emptied first in the
|
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.
|
runtests.pl script). They remain in there after a test run.
|
||||||
|
|
||||||
### Log Verbosity
|
### Log Verbosity
|
||||||
|
|
||||||
A curl build with `--enable-debug` offers more verbose output in the logs.
|
A curl build with `--enable-debug` offers more verbose output in the logs.
|
||||||
|
@ -166,28 +166,28 @@ SPDX-License-Identifier: curl
|
||||||
with `curl -v`. While a curl debug built is
|
with `curl -v`. While a curl debug built is
|
||||||
***not suitable for production***, it is often helpful in tracking down
|
***not suitable for production***, it is often helpful in tracking down
|
||||||
problems.
|
problems.
|
||||||
|
|
||||||
Sometimes, one needs detailed logging of operations, but does not want
|
Sometimes, one needs detailed logging of operations, but does not want
|
||||||
to drown in output. The newly introduced *connection filters* allows one to
|
to drown in output. The newly introduced *connection filters* allows one to
|
||||||
dynamically increase log verbosity for a particular *filter type*. Example:
|
dynamically increase log verbosity for a particular *filter type*. Example:
|
||||||
|
|
||||||
CURL_DEBUG=ssl curl -v https://curl.se
|
CURL_DEBUG=ssl curl -v https://curl.se
|
||||||
|
|
||||||
will make the `ssl` connection filter log more details. One may do that for
|
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.
|
space.
|
||||||
|
|
||||||
CURL_DEBUG=ssl,http/2 curl -v https://curl.se
|
CURL_DEBUG=ssl,http/2 curl -v https://curl.se
|
||||||
|
|
||||||
The order of filter type names is not relevant. Names used here are
|
The order of filter type names is not relevant. Names used here are
|
||||||
case insensitive. Note that these names are implementation internals and
|
case insensitive. Note that these names are implementation internals and
|
||||||
subject to change.
|
subject to change.
|
||||||
|
|
||||||
Some, likely stable names are `tcp`, `ssl`, `http/2`. For a current list,
|
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
|
one may search the sources for `struct Curl_cftype` definitions and find
|
||||||
the names there. Also, some filters are only available with certain build
|
the names there. Also, some filters are only available with certain build
|
||||||
options, of course.
|
options, of course.
|
||||||
|
|
||||||
### Test input files
|
### Test input files
|
||||||
|
|
||||||
All test cases are put in the `data/` subdirectory. Each test is stored in
|
All test cases are put in the `data/` subdirectory. Each test is stored in
|
||||||
|
|
|
@ -15,10 +15,10 @@
|
||||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
# 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
|
# copies of the Software, and permit persons to whom the Software is
|
||||||
# furnished to do so, under the terms of the COPYING file.
|
# furnished to do so, under the terms of the COPYING file.
|
||||||
#
|
#
|
||||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||||
# KIND, either express or implied.
|
# KIND, either express or implied.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: curl
|
# SPDX-License-Identifier: curl
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
|
|
@ -15,10 +15,10 @@
|
||||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
# 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
|
# copies of the Software, and permit persons to whom the Software is
|
||||||
# furnished to do so, under the terms of the COPYING file.
|
# furnished to do so, under the terms of the COPYING file.
|
||||||
#
|
#
|
||||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||||
# KIND, either express or implied.
|
# KIND, either express or implied.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: curl
|
# SPDX-License-Identifier: curl
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
|
|
@ -58,5 +58,3 @@ def pytest_generate_tests(metafunc):
|
||||||
count = int(metafunc.config.getoption("repeat"))
|
count = int(metafunc.config.getoption("repeat"))
|
||||||
metafunc.fixturenames.append('tmp_ct')
|
metafunc.fixturenames.append('tmp_ct')
|
||||||
metafunc.parametrize('repeat', range(count))
|
metafunc.parametrize('repeat', range(count))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -154,20 +154,20 @@ sub generate_c {
|
||||||
elsif(! $seen_return) {
|
elsif(! $seen_return) {
|
||||||
if(/CURLOPT_URL/) {
|
if(/CURLOPT_URL/) {
|
||||||
# URL is passed in as argument or by global
|
# URL is passed in as argument or by global
|
||||||
my $var = shift @urlvars;
|
my $var = shift @urlvars;
|
||||||
s/\"[^\"]*\"/$var/;
|
s/\"[^\"]*\"/$var/;
|
||||||
}
|
}
|
||||||
s/\bhnd\b/curl/;
|
s/\bhnd\b/curl/;
|
||||||
# Convert to macro wrapper
|
# Convert to macro wrapper
|
||||||
s/curl_easy_setopt/test_setopt/;
|
s/curl_easy_setopt/test_setopt/;
|
||||||
if(/curl_easy_perform/) {
|
if(/curl_easy_perform/) {
|
||||||
s/\bret\b/res/;
|
s/\bret\b/res/;
|
||||||
push @code, $_;
|
push @code, $_;
|
||||||
push @code, "test_cleanup:\n";
|
push @code, "test_cleanup:\n";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
push @code, $_;
|
push @code, $_;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ http
|
||||||
--data-urlencode
|
--data-urlencode
|
||||||
</name>
|
</name>
|
||||||
<command>
|
<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>
|
</command>
|
||||||
<file name="%LOGDIR/%TESTNUMBER.txt">
|
<file name="%LOGDIR/%TESTNUMBER.txt">
|
||||||
content to _?!#$'|<>
|
content to _?!#$'|<>
|
||||||
|
|
|
@ -23,7 +23,7 @@ file
|
||||||
X-Y range on a file:// URL to stdout
|
X-Y range on a file:// URL to stdout
|
||||||
</name>
|
</name>
|
||||||
<command option="no-include">
|
<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>
|
</command>
|
||||||
<file name="%LOGDIR/test%TESTNUMBER.txt">
|
<file name="%LOGDIR/test%TESTNUMBER.txt">
|
||||||
1234567890
|
1234567890
|
||||||
|
|
|
@ -24,7 +24,7 @@ file
|
||||||
0-Y range on a file:// URL to stdout
|
0-Y range on a file:// URL to stdout
|
||||||
</name>
|
</name>
|
||||||
<command option="no-include">
|
<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>
|
</command>
|
||||||
<file name="%LOGDIR/test%TESTNUMBER.txt">
|
<file name="%LOGDIR/test%TESTNUMBER.txt">
|
||||||
1234567890
|
1234567890
|
||||||
|
|
|
@ -23,7 +23,7 @@ file
|
||||||
X-X range on a file:// URL to stdout
|
X-X range on a file:// URL to stdout
|
||||||
</name>
|
</name>
|
||||||
<command option="no-include">
|
<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>
|
</command>
|
||||||
<file name="%LOGDIR/test%TESTNUMBER.txt">
|
<file name="%LOGDIR/test%TESTNUMBER.txt">
|
||||||
1234567890
|
1234567890
|
||||||
|
|
|
@ -24,7 +24,7 @@ file
|
||||||
X- range on a file:// URL to stdout
|
X- range on a file:// URL to stdout
|
||||||
</name>
|
</name>
|
||||||
<command option="no-include">
|
<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>
|
</command>
|
||||||
<file name="%LOGDIR/test%TESTNUMBER.txt">
|
<file name="%LOGDIR/test%TESTNUMBER.txt">
|
||||||
1234567890
|
1234567890
|
||||||
|
|
|
@ -24,7 +24,7 @@ file
|
||||||
-Y range on a file:// URL to stdout
|
-Y range on a file:// URL to stdout
|
||||||
</name>
|
</name>
|
||||||
<command option="no-include">
|
<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>
|
</command>
|
||||||
<file name="%LOGDIR/test%TESTNUMBER.txt">
|
<file name="%LOGDIR/test%TESTNUMBER.txt">
|
||||||
1234567890
|
1234567890
|
||||||
|
|
|
@ -20,7 +20,7 @@ manual
|
||||||
none
|
none
|
||||||
</server>
|
</server>
|
||||||
<name>
|
<name>
|
||||||
curl --manual
|
curl --manual
|
||||||
</name>
|
</name>
|
||||||
<command>
|
<command>
|
||||||
--manual
|
--manual
|
||||||
|
|
|
@ -28,7 +28,7 @@ Invalid large X- range on a file://
|
||||||
# This range value is 2**32+7, which will be truncated to the valid value 7
|
# 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
|
# if the large file support is not working correctly
|
||||||
<command>
|
<command>
|
||||||
-r 4294967303- file://localhost%FILE_PWD/%LOGDIR/test%TESTNUMBER.txt
|
-r 4294967303- file://localhost%FILE_PWD/%LOGDIR/test%TESTNUMBER.txt
|
||||||
</command>
|
</command>
|
||||||
<file name="%LOGDIR/test%TESTNUMBER.txt">
|
<file name="%LOGDIR/test%TESTNUMBER.txt">
|
||||||
1234567890
|
1234567890
|
||||||
|
|
|
@ -80,7 +80,7 @@ CURL_GETHOSTNAME=curlhost
|
||||||
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
|
LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
|
||||||
</setenv>
|
</setenv>
|
||||||
<command>
|
<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>
|
</command>
|
||||||
<precheck>
|
<precheck>
|
||||||
chkhostname curlhost
|
chkhostname curlhost
|
||||||
|
|
|
@ -31,7 +31,7 @@ Content-Type: text/html
|
||||||
</data1>
|
</data1>
|
||||||
|
|
||||||
# we use skip to make the test server never read the full payload off
|
# 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>
|
<servercmd>
|
||||||
skip: 1053700
|
skip: 1053700
|
||||||
</servercmd>
|
</servercmd>
|
||||||
|
|
|
@ -31,7 +31,7 @@ Content-Type: text/html
|
||||||
</data1>
|
</data1>
|
||||||
|
|
||||||
# we use skip to make the test server never read the full payload off
|
# 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>
|
<servercmd>
|
||||||
skip: 100
|
skip: 100
|
||||||
</servercmd>
|
</servercmd>
|
||||||
|
|
|
@ -31,7 +31,7 @@ FAILURE2
|
||||||
</data1>
|
</data1>
|
||||||
|
|
||||||
# we use skip to make the test server never read the full payload off
|
# 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>
|
<servercmd>
|
||||||
skip: 100
|
skip: 100
|
||||||
</servercmd>
|
</servercmd>
|
||||||
|
|
|
@ -27,7 +27,7 @@ http://ur%20[0-60000000000000000000
|
||||||
|
|
||||||
# Verify data after the test has been "shot"
|
# Verify data after the test has been "shot"
|
||||||
<verify>
|
<verify>
|
||||||
# curl: (3) [globbing] bad range in column
|
# curl: (3) [globbing] bad range in column
|
||||||
<errorcode>
|
<errorcode>
|
||||||
3
|
3
|
||||||
</errorcode>
|
</errorcode>
|
||||||
|
|
|
@ -91,7 +91,7 @@ http
|
||||||
crypto
|
crypto
|
||||||
</features>
|
</features>
|
||||||
<name>
|
<name>
|
||||||
HTTP GET with --anyauth with two URLs (picking Digest)
|
HTTP GET with --anyauth with two URLs (picking Digest)
|
||||||
</name>
|
</name>
|
||||||
<command>
|
<command>
|
||||||
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --anyauth http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001
|
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --anyauth http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001
|
||||||
|
|
|
@ -21,7 +21,7 @@ http
|
||||||
proxy
|
proxy
|
||||||
</features>
|
</features>
|
||||||
<name>
|
<name>
|
||||||
Provide illegal proxy name
|
Provide illegal proxy name
|
||||||
</name>
|
</name>
|
||||||
<command>
|
<command>
|
||||||
--proxy "http://a:b@/x" http://%HOSTIP:%NOLISTENPORT
|
--proxy "http://a:b@/x" http://%HOSTIP:%NOLISTENPORT
|
||||||
|
|
|
@ -18,7 +18,7 @@ data in file
|
||||||
ftp
|
ftp
|
||||||
</server>
|
</server>
|
||||||
<name>
|
<name>
|
||||||
FTP URL with ?-letters in username and password
|
FTP URL with ?-letters in username and password
|
||||||
</name>
|
</name>
|
||||||
<command>
|
<command>
|
||||||
"ftp://use%3fr:pass%3fword@%HOSTIP:%FTPPORT/%TESTNUMBER"
|
"ftp://use%3fr:pass%3fword@%HOSTIP:%FTPPORT/%TESTNUMBER"
|
||||||
|
|
|
@ -19,7 +19,7 @@ RETR
|
||||||
ftp
|
ftp
|
||||||
</server>
|
</server>
|
||||||
<name>
|
<name>
|
||||||
FTP timed conditioned get file with identical time stamp
|
FTP timed conditioned get file with identical time stamp
|
||||||
</name>
|
</name>
|
||||||
<command>
|
<command>
|
||||||
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -z "2004 jan 1 12:12:12 UTC"
|
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -z "2004 jan 1 12:12:12 UTC"
|
||||||
|
|
|
@ -42,7 +42,7 @@ FTP RETR over proxy with CURLOPT_PROXY_TRANSFER_MODE
|
||||||
</name>
|
</name>
|
||||||
# first URL then proxy
|
# first URL then proxy
|
||||||
<command>
|
<command>
|
||||||
ftp://www.example.com/moo/%TESTNUMBER http://%HOSTIP:%HTTPPORT
|
ftp://www.example.com/moo/%TESTNUMBER http://%HOSTIP:%HTTPPORT
|
||||||
</command>
|
</command>
|
||||||
</client>
|
</client>
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ socks5
|
||||||
HTTP GET via SOCKS5 set with --proxy
|
HTTP GET via SOCKS5 set with --proxy
|
||||||
</name>
|
</name>
|
||||||
<command>
|
<command>
|
||||||
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy socks5://%HOSTIP:%SOCKSPORT
|
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy socks5://%HOSTIP:%SOCKSPORT
|
||||||
</command>
|
</command>
|
||||||
</client>
|
</client>
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ socks5
|
||||||
FTP fetch with --proxy set to socks5://
|
FTP fetch with --proxy set to socks5://
|
||||||
</name>
|
</name>
|
||||||
<command>
|
<command>
|
||||||
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER --proxy socks5://%HOSTIP:%SOCKSPORT
|
ftp://%HOSTIP:%FTPPORT/%TESTNUMBER --proxy socks5://%HOSTIP:%SOCKSPORT
|
||||||
</command>
|
</command>
|
||||||
</client>
|
</client>
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ socks5
|
||||||
FTP fetch with --proxy set to socks5:// and with --connect-to
|
FTP fetch with --proxy set to socks5:// and with --connect-to
|
||||||
</name>
|
</name>
|
||||||
<command>
|
<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>
|
</command>
|
||||||
</client>
|
</client>
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ proxy
|
||||||
FTP fetch with --proxy set to http:// and with --connect-to
|
FTP fetch with --proxy set to http:// and with --connect-to
|
||||||
</name>
|
</name>
|
||||||
<command>
|
<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>
|
</command>
|
||||||
</client>
|
</client>
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ proxy
|
||||||
FTP fetch with --preproxy, --proxy and --connect-to
|
FTP fetch with --preproxy, --proxy and --connect-to
|
||||||
</name>
|
</name>
|
||||||
<command>
|
<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>
|
</command>
|
||||||
</client>
|
</client>
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ socks5
|
||||||
HTTP GET with IPv6 numerical via SOCKS5h
|
HTTP GET with IPv6 numerical via SOCKS5h
|
||||||
</name>
|
</name>
|
||||||
<command>
|
<command>
|
||||||
http://[2200::33]:%HTTPPORT/%TESTNUMBER --proxy socks5h://%HOSTIP:%SOCKSPORT
|
http://[2200::33]:%HTTPPORT/%TESTNUMBER --proxy socks5h://%HOSTIP:%SOCKSPORT
|
||||||
</command>
|
</command>
|
||||||
</client>
|
</client>
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ socks5
|
||||||
HTTP GET with IPv4 numerical via SOCKS5h
|
HTTP GET with IPv4 numerical via SOCKS5h
|
||||||
</name>
|
</name>
|
||||||
<command>
|
<command>
|
||||||
http://12.34.56.78:%HTTPPORT/%TESTNUMBER --proxy socks5h://%HOSTIP:%SOCKSPORT
|
http://12.34.56.78:%HTTPPORT/%TESTNUMBER --proxy socks5h://%HOSTIP:%SOCKSPORT
|
||||||
</command>
|
</command>
|
||||||
</client>
|
</client>
|
||||||
|
|
||||||
|
|
|
@ -873,7 +873,7 @@ sub RCPT_smtp {
|
||||||
/^<([a-zA-Z0-9._%+-]+)\@(([a-zA-Z0-9-]+)\.)+([a-zA-Z]{2,4})>$/) ||
|
/^<([a-zA-Z0-9._%+-]+)\@(([a-zA-Z0-9-]+)\.)+([a-zA-Z]{2,4})>$/) ||
|
||||||
($smtputf8 && $to =~
|
($smtputf8 && $to =~
|
||||||
/^<([a-zA-Z0-9\x{80}-\x{ff}._%+-]+)\@(([a-zA-Z0-9\x{80}-\x{ff}-]+)\.)+([a-zA-Z]{2,4})>$/)) {
|
/^<([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 {
|
else {
|
||||||
sendcontrol "501 Invalid address\r\n";
|
sendcontrol "501 Invalid address\r\n";
|
||||||
|
@ -1820,7 +1820,7 @@ sub LIST_pop3 {
|
||||||
# This is a built-in fake-message list
|
# This is a built-in fake-message list
|
||||||
my @data = (
|
my @data = (
|
||||||
"1 100\r\n",
|
"1 100\r\n",
|
||||||
"2 4294967400\r\n", # > 4 GB
|
"2 4294967400\r\n", # > 4 GB
|
||||||
"3 200\r\n",
|
"3 200\r\n",
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
2
tests/http/.gitignore
vendored
2
tests/http/.gitignore
vendored
|
@ -3,4 +3,4 @@
|
||||||
# SPDX-License-Identifier: curl
|
# SPDX-License-Identifier: curl
|
||||||
|
|
||||||
config.ini
|
config.ini
|
||||||
gen
|
gen
|
||||||
|
|
2
tests/http/clients/.gitignore
vendored
2
tests/http/clients/.gitignore
vendored
|
@ -7,4 +7,4 @@ h2-download
|
||||||
ws-data
|
ws-data
|
||||||
ws-pingpong
|
ws-pingpong
|
||||||
h2-upgrade-extreme
|
h2-upgrade-extreme
|
||||||
tls-session-reuse
|
tls-session-reuse
|
||||||
|
|
|
@ -84,4 +84,3 @@ def nghttpx_fwd(env, httpd) -> Optional[Nghttpx]:
|
||||||
assert nghttpx.start()
|
assert nghttpx.start()
|
||||||
yield nghttpx
|
yield nghttpx
|
||||||
nghttpx.stop()
|
nghttpx.stop()
|
||||||
|
|
||||||
|
|
|
@ -26,4 +26,4 @@
|
||||||
pytest
|
pytest
|
||||||
cryptography
|
cryptography
|
||||||
multipart
|
multipart
|
||||||
websockets
|
websockets
|
||||||
|
|
|
@ -140,5 +140,3 @@ class TestGoAway:
|
||||||
log.debug(f'request {idx} connected')
|
log.debug(f'request {idx} connected')
|
||||||
# this should take `count` seconds to retrieve
|
# this should take `count` seconds to retrieve
|
||||||
assert r.duration >= timedelta(seconds=count)
|
assert r.duration >= timedelta(seconds=count)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -108,4 +108,3 @@ class TestErrors:
|
||||||
r.check_response(http_status=200, count=1)
|
r.check_response(http_status=200, count=1)
|
||||||
# check that we did a downgrade
|
# check that we did a downgrade
|
||||||
assert r.stats[0]['http_version'] == '1.1', r.dump_logs()
|
assert r.stats[0]['http_version'] == '1.1', r.dump_logs()
|
||||||
|
|
||||||
|
|
|
@ -112,4 +112,3 @@ class TestEyeballs:
|
||||||
r.check_response(count=1, http_status=None, exitcode=False)
|
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_connect'] == 0 # no one should have listened
|
||||||
assert r.stats[0]['time_appconnect'] == 0 # did not happen either
|
assert r.stats[0]['time_appconnect'] == 0 # did not happen either
|
||||||
|
|
||||||
|
|
|
@ -298,7 +298,7 @@ class TestUpload:
|
||||||
'--cacert', env.ca.cert_file,
|
'--cacert', env.ca.cert_file,
|
||||||
'--request', 'PUT',
|
'--request', 'PUT',
|
||||||
'--digest', '--user', 'test:test',
|
'--digest', '--user', 'test:test',
|
||||||
'--data-binary', f'@{fdata}',
|
'--data-binary', f'@{fdata}',
|
||||||
'--url', url,
|
'--url', url,
|
||||||
])
|
])
|
||||||
assert r.exit_code == 0, r.dump_logs()
|
assert r.exit_code == 0, r.dump_logs()
|
||||||
|
|
|
@ -157,4 +157,3 @@ class TestCaddy:
|
||||||
assert r.total_connects > 1, r.dump_logs()
|
assert r.total_connects > 1, r.dump_logs()
|
||||||
else:
|
else:
|
||||||
assert r.total_connects == 1, r.dump_logs()
|
assert r.total_connects == 1, r.dump_logs()
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ class TestPush:
|
||||||
url = f'https://{env.domain1}:{env.https_port}/push/data1'
|
url = f'https://{env.domain1}:{env.https_port}/push/data1'
|
||||||
r = curl.http_download(urls=[url], alpn_proto='h2', with_stats=False,
|
r = curl.http_download(urls=[url], alpn_proto='h2', with_stats=False,
|
||||||
with_headers=True)
|
with_headers=True)
|
||||||
r.check_exit_code(0)
|
r.check_exit_code(0)
|
||||||
assert len(r.responses) == 2, f'{r.responses}'
|
assert len(r.responses) == 2, f'{r.responses}'
|
||||||
assert r.responses[0]['status'] == 103, f'{r.responses}'
|
assert r.responses[0]['status'] == 103, f'{r.responses}'
|
||||||
assert 'link' in r.responses[0]['header'], f'{r.responses[0]}'
|
assert 'link' in r.responses[0]['header'], f'{r.responses[0]}'
|
||||||
|
|
|
@ -248,4 +248,3 @@ class TestProxy:
|
||||||
assert r.total_connects == 2
|
assert r.total_connects == 2
|
||||||
else:
|
else:
|
||||||
assert r.total_connects == 2
|
assert r.total_connects == 2
|
||||||
|
|
||||||
|
|
|
@ -157,4 +157,3 @@ class TestProxyAuth:
|
||||||
protocol='HTTP/2' if proto == 'h2' else 'HTTP/1.1')
|
protocol='HTTP/2' if proto == 'h2' else 'HTTP/1.1')
|
||||||
assert self.get_tunnel_proto_used(r) == 'HTTP/2' \
|
assert self.get_tunnel_proto_used(r) == 'HTTP/2' \
|
||||||
if tunnel == 'h2' else 'HTTP/1.1'
|
if tunnel == 'h2' else 'HTTP/1.1'
|
||||||
|
|
||||||
|
|
|
@ -109,4 +109,4 @@ class TestTracing:
|
||||||
if m is not None:
|
if m is not None:
|
||||||
found_tcp = True
|
found_tcp = True
|
||||||
if found_tcp:
|
if found_tcp:
|
||||||
assert False, f'TCP filter appears in trace "all,-tcp": {r.stderr}'
|
assert False, f'TCP filter appears in trace "all,-tcp": {r.stderr}'
|
||||||
|
|
|
@ -469,4 +469,3 @@ class Env:
|
||||||
pytest.exit(f"`make`in {client_dir} failed:\n{p.stderr}")
|
pytest.exit(f"`make`in {client_dir} failed:\n{p.stderr}")
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
2
tests/http/testenv/mod_curltest/.gitignore
vendored
2
tests/http/testenv/mod_curltest/.gitignore
vendored
|
@ -2,4 +2,4 @@
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: curl
|
# SPDX-License-Identifier: curl
|
||||||
|
|
||||||
*.slo
|
*.slo
|
||||||
|
|
|
@ -256,4 +256,3 @@ class NghttpxFwd(Nghttpx):
|
||||||
time.sleep(.1)
|
time.sleep(.1)
|
||||||
log.error(f"Server still not responding after {timeout}")
|
log.error(f"Server still not responding after {timeout}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
|
@ -45,5 +45,3 @@ def alloc_ports(port_specs: Dict[str, int]) -> Dict[str, int]:
|
||||||
for s in socks:
|
for s in socks:
|
||||||
s.close()
|
s.close()
|
||||||
return ports
|
return ports
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -686,4 +686,3 @@ lib3100_LDADD = $(TESTUTIL_LIBS)
|
||||||
|
|
||||||
lib3101_SOURCES = lib3101.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
|
lib3101_SOURCES = lib3101.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
|
||||||
lib3101_LDADD = $(TESTUTIL_LIBS)
|
lib3101_LDADD = $(TESTUTIL_LIBS)
|
||||||
|
|
||||||
|
|
|
@ -88,4 +88,3 @@ int test(char *URL)
|
||||||
curl_global_cleanup();
|
curl_global_cleanup();
|
||||||
return (int)res;
|
return (int)res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -65,4 +65,3 @@ test_cleanup:
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -119,4 +119,3 @@ fail:
|
||||||
curl_global_cleanup();
|
curl_global_cleanup();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
tests/server/.gitignore
vendored
2
tests/server/.gitignore
vendored
|
@ -11,4 +11,4 @@ sws
|
||||||
tftpd
|
tftpd
|
||||||
socksd
|
socksd
|
||||||
disabled
|
disabled
|
||||||
mqttd
|
mqttd
|
||||||
|
|
|
@ -18,7 +18,7 @@ rem * furnished to do so, under the terms of the COPYING file.
|
||||||
rem *
|
rem *
|
||||||
rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||||
rem * KIND, either express or implied.
|
rem * KIND, either express or implied.
|
||||||
rem *
|
rem *
|
||||||
rem * SPDX-License-Identifier: curl
|
rem * SPDX-License-Identifier: curl
|
||||||
rem *
|
rem *
|
||||||
rem ***************************************************************************
|
rem ***************************************************************************
|
||||||
|
@ -28,7 +28,7 @@ if exist %OUTFILE% (
|
||||||
)
|
)
|
||||||
|
|
||||||
echo %MACRO_NAME% = \> %OUTFILE%
|
echo %MACRO_NAME% = \> %OUTFILE%
|
||||||
for %%i in (%*) do echo %DIROBJ%/%%i \>> %OUTFILE%
|
for %%i in (%*) do echo %DIROBJ%/%%i \>> %OUTFILE%
|
||||||
echo. >> %OUTFILE%
|
echo. >> %OUTFILE%
|
||||||
|
|
||||||
:END
|
:END
|
||||||
|
|
|
@ -18,7 +18,7 @@ rem * furnished to do so, under the terms of the COPYING file.
|
||||||
rem *
|
rem *
|
||||||
rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||||
rem * KIND, either express or implied.
|
rem * KIND, either express or implied.
|
||||||
rem *
|
rem *
|
||||||
rem * SPDX-License-Identifier: curl
|
rem * SPDX-License-Identifier: curl
|
||||||
rem *
|
rem *
|
||||||
rem ***************************************************************************
|
rem ***************************************************************************
|
||||||
|
@ -29,7 +29,7 @@ IF %ERRORLEVEL% == 1 (
|
||||||
ECHO Error: Can't find `nmake.exe` - be sure to run this script from within a Developer Command-Prompt
|
ECHO Error: Can't find `nmake.exe` - be sure to run this script from within a Developer Command-Prompt
|
||||||
ECHO.
|
ECHO.
|
||||||
) ELSE (
|
) 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 (
|
IF %ERRORLEVEL% NEQ 0 (
|
||||||
ECHO "Error: Build Failed"
|
ECHO "Error: Build Failed"
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user