mirror of
https://github.com/curl/curl.git
synced 2026-01-18 17:21:26 +01:00
FAQ/TODO/KNOWN_BUGS: convert to markdown
- convert to markdown - auto-generate the TOCs on the website, remove them from the docs - cleanups - spellchecked - updated links Closes #19875
This commit is contained in:
2
.github/scripts/badwords.ok
vendored
2
.github/scripts/badwords.ok
vendored
@@ -4,4 +4,4 @@
|
|||||||
#
|
#
|
||||||
# whitelisted uses of bad words
|
# whitelisted uses of bad words
|
||||||
# file:[line]:rule
|
# file:[line]:rule
|
||||||
docs/FAQ::\bwill\b
|
docs/FAQ.md::\bwill\b
|
||||||
|
|||||||
15
.github/scripts/pyspelling.words
vendored
15
.github/scripts/pyspelling.words
vendored
@@ -53,6 +53,7 @@ axTLS
|
|||||||
backend
|
backend
|
||||||
backends
|
backends
|
||||||
backoff
|
backoff
|
||||||
|
backtick
|
||||||
backticks
|
backticks
|
||||||
balancers
|
balancers
|
||||||
Baratov
|
Baratov
|
||||||
@@ -171,8 +172,10 @@ dbg
|
|||||||
Debian
|
Debian
|
||||||
DEBUGBUILD
|
DEBUGBUILD
|
||||||
decrypt
|
decrypt
|
||||||
|
decrypted
|
||||||
decrypting
|
decrypting
|
||||||
deepcode
|
deepcode
|
||||||
|
defacto
|
||||||
DELE
|
DELE
|
||||||
DER
|
DER
|
||||||
dereference
|
dereference
|
||||||
@@ -201,6 +204,7 @@ DLLs
|
|||||||
DNS
|
DNS
|
||||||
dns
|
dns
|
||||||
dnsop
|
dnsop
|
||||||
|
DNSSEC
|
||||||
DoH
|
DoH
|
||||||
DoT
|
DoT
|
||||||
doxygen
|
doxygen
|
||||||
@@ -214,6 +218,7 @@ dynbuf
|
|||||||
EAGAIN
|
EAGAIN
|
||||||
EBCDIC
|
EBCDIC
|
||||||
ECC
|
ECC
|
||||||
|
ECCN
|
||||||
ECDHE
|
ECDHE
|
||||||
ECH
|
ECH
|
||||||
ECHConfig
|
ECHConfig
|
||||||
@@ -258,6 +263,7 @@ Fedora
|
|||||||
Feltzing
|
Feltzing
|
||||||
ffi
|
ffi
|
||||||
filesize
|
filesize
|
||||||
|
filesystem
|
||||||
FindCURL
|
FindCURL
|
||||||
FLOSS
|
FLOSS
|
||||||
fnmatch
|
fnmatch
|
||||||
@@ -299,6 +305,7 @@ Ghedini
|
|||||||
giga
|
giga
|
||||||
Gisle
|
Gisle
|
||||||
Glesys
|
Glesys
|
||||||
|
glibc
|
||||||
globbed
|
globbed
|
||||||
globbing
|
globbing
|
||||||
gmail
|
gmail
|
||||||
@@ -380,6 +387,7 @@ imap
|
|||||||
IMAPS
|
IMAPS
|
||||||
imaps
|
imaps
|
||||||
impacket
|
impacket
|
||||||
|
implementers
|
||||||
init
|
init
|
||||||
initializer
|
initializer
|
||||||
inlined
|
inlined
|
||||||
@@ -433,6 +441,7 @@ ldap
|
|||||||
LDAPS
|
LDAPS
|
||||||
ldaps
|
ldaps
|
||||||
LF
|
LF
|
||||||
|
LGPL
|
||||||
LGTM
|
LGTM
|
||||||
libbacktrace
|
libbacktrace
|
||||||
libbrotlidec
|
libbrotlidec
|
||||||
@@ -568,6 +577,7 @@ Necko
|
|||||||
NetBSD
|
NetBSD
|
||||||
netrc
|
netrc
|
||||||
netstat
|
netstat
|
||||||
|
NetWare
|
||||||
Netware
|
Netware
|
||||||
NFS
|
NFS
|
||||||
nghttp
|
nghttp
|
||||||
@@ -711,6 +721,7 @@ ROADMAP
|
|||||||
Roadmap
|
Roadmap
|
||||||
Rockbox
|
Rockbox
|
||||||
roffit
|
roffit
|
||||||
|
RPC
|
||||||
RPG
|
RPG
|
||||||
RR
|
RR
|
||||||
RRs
|
RRs
|
||||||
@@ -798,6 +809,7 @@ sprintf
|
|||||||
src
|
src
|
||||||
SRP
|
SRP
|
||||||
SRWLOCK
|
SRWLOCK
|
||||||
|
SSI
|
||||||
SSL
|
SSL
|
||||||
ssl
|
ssl
|
||||||
SSLeay
|
SSLeay
|
||||||
@@ -962,8 +974,10 @@ wcurl
|
|||||||
WebDAV
|
WebDAV
|
||||||
WebOS
|
WebOS
|
||||||
webpage
|
webpage
|
||||||
|
webpages
|
||||||
WebSocket
|
WebSocket
|
||||||
WEBSOCKET
|
WEBSOCKET
|
||||||
|
Wget
|
||||||
WHATWG
|
WHATWG
|
||||||
whitespace
|
whitespace
|
||||||
Whitespaces
|
Whitespaces
|
||||||
@@ -982,6 +996,7 @@ www
|
|||||||
Xbox
|
Xbox
|
||||||
XDG
|
XDG
|
||||||
xdigit
|
xdigit
|
||||||
|
XHTML
|
||||||
Xilinx
|
Xilinx
|
||||||
xmllint
|
xmllint
|
||||||
XP
|
XP
|
||||||
|
|||||||
2
.github/workflows/checkdocs.yml
vendored
2
.github/workflows/checkdocs.yml
vendored
@@ -138,7 +138,7 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: 'badwords'
|
- name: 'badwords'
|
||||||
run: .github/scripts/badwords.pl -w .github/scripts/badwords.ok '**.md' docs/FAQ docs/KNOWN_BUGS docs/TODO packages/OS400/README.OS400 < .github/scripts/badwords.txt
|
run: .github/scripts/badwords.pl -w .github/scripts/badwords.ok '**.md' packages/OS400/README.OS400 < .github/scripts/badwords.txt
|
||||||
|
|
||||||
- name: 'verify synopsis'
|
- name: 'verify synopsis'
|
||||||
run: .github/scripts/verify-synopsis.pl docs/libcurl/curl*.md
|
run: .github/scripts/verify-synopsis.pl docs/libcurl/curl*.md
|
||||||
|
|||||||
3
README
3
README
@@ -15,7 +15,8 @@ README
|
|||||||
available to be used by your software. Read the libcurl.3 man page to
|
available to be used by your software. Read the libcurl.3 man page to
|
||||||
learn how.
|
learn how.
|
||||||
|
|
||||||
You find answers to the most frequent questions we get in the FAQ document.
|
You find answers to the most frequent questions we get in the FAQ.md
|
||||||
|
document.
|
||||||
|
|
||||||
Study the COPYING file for distribution terms.
|
Study the COPYING file for distribution terms.
|
||||||
|
|
||||||
|
|||||||
@@ -13,14 +13,11 @@ SPDX-PackageDownloadLocation = "https://curl.se/"
|
|||||||
|
|
||||||
[[annotations]]
|
[[annotations]]
|
||||||
path = [
|
path = [
|
||||||
"docs/FAQ",
|
|
||||||
"docs/INSTALL",
|
"docs/INSTALL",
|
||||||
"docs/KNOWN_BUGS",
|
|
||||||
"docs/libcurl/symbols-in-versions",
|
"docs/libcurl/symbols-in-versions",
|
||||||
"docs/MAIL-ETIQUETTE",
|
"docs/MAIL-ETIQUETTE",
|
||||||
"docs/options-in-versions",
|
"docs/options-in-versions",
|
||||||
"docs/THANKS",
|
"docs/THANKS",
|
||||||
"docs/TODO",
|
|
||||||
"lib/libcurl.vers.in",
|
"lib/libcurl.vers.in",
|
||||||
"lib/libcurl.def",
|
"lib/libcurl.def",
|
||||||
"packages/OS400/README.OS400",
|
"packages/OS400/README.OS400",
|
||||||
|
|||||||
1432
docs/FAQ.md
Normal file
1432
docs/FAQ.md
Normal file
File diff suppressed because it is too large
Load Diff
663
docs/KNOWN_BUGS
663
docs/KNOWN_BUGS
@@ -1,663 +0,0 @@
|
|||||||
_ _ ____ _
|
|
||||||
___| | | | _ \| |
|
|
||||||
/ __| | | | |_) | |
|
|
||||||
| (__| |_| | _ <| |___
|
|
||||||
\___|\___/|_| \_\_____|
|
|
||||||
|
|
||||||
Known Bugs
|
|
||||||
|
|
||||||
These are problems and bugs known to exist at the time of this release. Feel
|
|
||||||
free to join in and help us correct one or more of these. Also be sure to
|
|
||||||
check the changelog of the current development status, as one or more of these
|
|
||||||
problems may have been fixed or changed somewhat since this was written.
|
|
||||||
|
|
||||||
1. HTTP
|
|
||||||
|
|
||||||
2. TLS
|
|
||||||
2.1 IMAPS connection fails with Rustls error
|
|
||||||
2.2 Access violation sending client cert with Schannel
|
|
||||||
2.5 Client cert handling with Issuer DN differs between backends
|
|
||||||
2.7 Client cert (MTLS) issues with Schannel
|
|
||||||
2.11 Schannel TLS 1.2 handshake bug in old Windows versions
|
|
||||||
2.13 CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel
|
|
||||||
2.14 mbedTLS and CURLE_AGAIN handling
|
|
||||||
|
|
||||||
3. Email protocols
|
|
||||||
3.1 IMAP SEARCH ALL truncated response
|
|
||||||
3.2 No disconnect command
|
|
||||||
3.4 AUTH PLAIN for SMTP is not working on all servers
|
|
||||||
3.5 APOP authentication fails on POP3
|
|
||||||
3.6 POP3 issue when reading small chunks
|
|
||||||
|
|
||||||
4. Command line
|
|
||||||
4.1 -T /dev/stdin may upload with an incorrect content length
|
|
||||||
4.2 -T - always uploads chunked
|
|
||||||
|
|
||||||
5. Build and portability issues
|
|
||||||
5.1 OS400 port requires deprecated IBM library
|
|
||||||
5.2 curl-config --libs contains private details
|
|
||||||
5.3 LDFLAGS passed too late making libs linked incorrectly
|
|
||||||
5.6 Cygwin: make install installs curl-config.1 twice
|
|
||||||
5.12 flaky CI builds
|
|
||||||
5.13 long paths are not fully supported on Windows
|
|
||||||
5.15 Unicode on Windows
|
|
||||||
|
|
||||||
6. Authentication
|
|
||||||
6.1 Digest auth-int for PUT/POST
|
|
||||||
6.2 MIT Kerberos for Windows build
|
|
||||||
6.3 NTLM in system context uses wrong name
|
|
||||||
6.5 NTLM does not support password with Unicode 'SECTION SIGN' character
|
|
||||||
6.6 libcurl can fail to try alternatives with --proxy-any
|
|
||||||
6.7 Do not clear digest for single realm
|
|
||||||
6.9 SHA-256 digest not supported in Windows SSPI builds
|
|
||||||
6.10 curl never completes Negotiate over HTTP
|
|
||||||
6.11 Negotiate on Windows fails
|
|
||||||
6.13 Negotiate against Hadoop HDFS
|
|
||||||
|
|
||||||
7. FTP
|
|
||||||
7.4 FTP with ACCT
|
|
||||||
7.12 FTPS directory listing hangs on Windows with Schannel
|
|
||||||
|
|
||||||
9. SFTP and SCP
|
|
||||||
9.1 SFTP does not do CURLOPT_POSTQUOTE correct
|
|
||||||
9.3 Remote recursive folder creation with SFTP
|
|
||||||
9.4 libssh blocking and infinite loop problem
|
|
||||||
9.5 Cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!"
|
|
||||||
|
|
||||||
10. Connection
|
|
||||||
10.1 --interface with link-scoped IPv6 address
|
|
||||||
10.2 Does not acknowledge getaddrinfo sorting policy
|
|
||||||
10.3 SOCKS-SSPI discards the security context
|
|
||||||
|
|
||||||
11. Internals
|
|
||||||
11.1 gssapi library name + version is missing in curl_version_info()
|
|
||||||
11.2 error buffer not set if connection to multiple addresses fails
|
|
||||||
11.4 HTTP test server 'connection-monitor' problems
|
|
||||||
11.5 Connection information when using TCP Fast Open
|
|
||||||
11.6 test cases sometimes timeout
|
|
||||||
11.7 CURLOPT_CONNECT_TO does not work for HTTPS proxy
|
|
||||||
11.8 WinIDN test failures
|
|
||||||
11.9 setting a disabled option should return CURLE_NOT_BUILT_IN
|
|
||||||
|
|
||||||
12. LDAP
|
|
||||||
12.1 OpenLDAP hangs after returning results
|
|
||||||
12.2 LDAP on Windows does authentication wrong?
|
|
||||||
12.3 LDAP on Windows does not work
|
|
||||||
12.4 LDAPS requests to ActiveDirectory server hang
|
|
||||||
|
|
||||||
13. TCP/IP
|
|
||||||
13.1 telnet code does not handle partial writes properly
|
|
||||||
13.2 Trying local ports fails on Windows
|
|
||||||
|
|
||||||
15. CMake
|
|
||||||
15.1 cmake outputs: no version information available
|
|
||||||
15.6 uses -lpthread instead of Threads::Threads
|
|
||||||
15.7 generated .pc file contains strange entries
|
|
||||||
15.13 CMake build with MIT Kerberos does not work
|
|
||||||
|
|
||||||
16. aws-sigv4
|
|
||||||
16.2 aws-sigv4 does not handle multipart/form-data correctly
|
|
||||||
|
|
||||||
17. HTTP/2
|
|
||||||
17.1 HTTP/2 prior knowledge over proxy
|
|
||||||
17.2 HTTP/2 frames while in the connection pool kill reuse
|
|
||||||
17.3 ENHANCE_YOUR_CALM causes infinite retries
|
|
||||||
17.4 HTTP/2 + TLS spends a lot of time in recv
|
|
||||||
|
|
||||||
18. HTTP/3
|
|
||||||
18.1 connection migration does not work
|
|
||||||
18.2 quiche: QUIC connection is draining
|
|
||||||
18.3 OpenSSL-QUIC problems on google.com
|
|
||||||
|
|
||||||
19. RTSP
|
|
||||||
19.1 Some methods do not support response bodies
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
|
|
||||||
1. HTTP
|
|
||||||
|
|
||||||
2. TLS
|
|
||||||
|
|
||||||
2.1 IMAPS connection fails with Rustls error
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/10457
|
|
||||||
|
|
||||||
2.2 Access violation sending client cert with Schannel
|
|
||||||
|
|
||||||
When using Schannel to do client certs, curl sets PKCS12_NO_PERSIST_KEY to
|
|
||||||
avoid leaking the private key into the filesystem. Unfortunately that flag
|
|
||||||
instead seems to trigger a crash.
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/17626
|
|
||||||
|
|
||||||
2.5 Client cert handling with Issuer DN differs between backends
|
|
||||||
|
|
||||||
When the specified client certificate does not match any of the
|
|
||||||
server-specified DNs, the OpenSSL and GnuTLS backends behave differently.
|
|
||||||
The github discussion may contain a solution.
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/1411
|
|
||||||
|
|
||||||
2.7 Client cert (MTLS) issues with Schannel
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/3145
|
|
||||||
|
|
||||||
2.11 Schannel TLS 1.2 handshake bug in old Windows versions
|
|
||||||
|
|
||||||
In old versions of Windows such as 7 and 8.1 the Schannel TLS 1.2 handshake
|
|
||||||
implementation likely has a bug that can rarely cause the key exchange to
|
|
||||||
fail, resulting in error SEC_E_BUFFER_TOO_SMALL or SEC_E_MESSAGE_ALTERED.
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/5488
|
|
||||||
|
|
||||||
2.13 CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/8741
|
|
||||||
|
|
||||||
2.14 mbedTLS and CURLE_AGAIN handling
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/15801
|
|
||||||
|
|
||||||
3. Email protocols
|
|
||||||
|
|
||||||
3.1 IMAP SEARCH ALL truncated response
|
|
||||||
|
|
||||||
IMAP "SEARCH ALL" truncates output on large boxes. "A quick search of the
|
|
||||||
code reveals that pingpong.c contains some truncation code, at line 408, when
|
|
||||||
it deems the server response to be too large truncating it to 40 characters"
|
|
||||||
https://curl.se/bug/view.cgi?id=1366
|
|
||||||
|
|
||||||
3.2 No disconnect command
|
|
||||||
|
|
||||||
The disconnect commands (LOGOUT and QUIT) may not be sent by IMAP, POP3 and
|
|
||||||
SMTP if a failure occurs during the authentication phase of a connection.
|
|
||||||
|
|
||||||
3.4 AUTH PLAIN for SMTP is not working on all servers
|
|
||||||
|
|
||||||
Specifying "--login-options AUTH=PLAIN" on the command line does not seem to
|
|
||||||
work correctly.
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/4080
|
|
||||||
|
|
||||||
3.5 APOP authentication fails on POP3
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/10073
|
|
||||||
|
|
||||||
3.6 POP3 issue when reading small chunks
|
|
||||||
|
|
||||||
CURL_DBG_SOCK_RMAX=4 ./runtests.pl -v 982
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/12063
|
|
||||||
|
|
||||||
4. Command line
|
|
||||||
|
|
||||||
4.1 -T /dev/stdin may upload with an incorrect content length
|
|
||||||
|
|
||||||
-T stats the path to figure out its size in bytes to use it as Content-Length
|
|
||||||
if it is a regular file.
|
|
||||||
|
|
||||||
The problem with that is that, on BSDs and some other UNIXes (not Linux),
|
|
||||||
open(path) may not give you a file descriptor with a 0 offset from the start
|
|
||||||
of the file.
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/12177
|
|
||||||
|
|
||||||
4.2 -T - always uploads chunked
|
|
||||||
|
|
||||||
When the `<` shell operator is used. curl should realise that stdin is a
|
|
||||||
regular file in this case, and that it can do a non-chunked upload, like it
|
|
||||||
would do if you used -T file.
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/12171
|
|
||||||
|
|
||||||
5. Build and portability issues
|
|
||||||
|
|
||||||
5.1 OS400 port requires deprecated IBM library
|
|
||||||
|
|
||||||
curl for OS400 requires QADRT to build, which provides ASCII wrappers for
|
|
||||||
libc/POSIX functions in the ILE, but IBM no longer supports or even offers
|
|
||||||
this library to download.
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/5176
|
|
||||||
|
|
||||||
5.2 curl-config --libs contains private details
|
|
||||||
|
|
||||||
"curl-config --libs" include details set in LDFLAGS when configure is run
|
|
||||||
that might be needed only for building libcurl. Further, curl-config --cflags
|
|
||||||
suffers from the same effects with CFLAGS/CPPFLAGS.
|
|
||||||
|
|
||||||
5.3 LDFLAGS passed too late making libs linked incorrectly
|
|
||||||
|
|
||||||
Compiling latest curl on HP-UX and linking against a custom OpenSSL (which is
|
|
||||||
on the default loader/linker path), fails because the generated Makefile has
|
|
||||||
LDFLAGS passed on after LIBS.
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/14893
|
|
||||||
|
|
||||||
5.6 Cygwin: make install installs curl-config.1 twice
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/8839
|
|
||||||
|
|
||||||
5.12 flaky CI builds
|
|
||||||
|
|
||||||
We run many CI builds for each commit and PR on github, and especially a
|
|
||||||
number of the Windows builds are flaky. This means that we rarely get all CI
|
|
||||||
builds go green and complete without errors. This is unfortunate as it makes
|
|
||||||
us sometimes miss actual build problems and it is surprising to newcomers to
|
|
||||||
the project who (rightfully) do not expect this.
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/6972
|
|
||||||
|
|
||||||
5.13 long paths are not fully supported on Windows
|
|
||||||
|
|
||||||
curl on Windows cannot access long paths (paths longer than 260 characters).
|
|
||||||
However, as a workaround, the Windows path prefix \\?\ which disables all
|
|
||||||
path interpretation may work to allow curl to access the path. For example:
|
|
||||||
\\?\c:\longpath.
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/8361
|
|
||||||
|
|
||||||
5.15 Unicode on Windows
|
|
||||||
|
|
||||||
Passing in a Unicode filename with -o:
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/11461
|
|
||||||
|
|
||||||
Passing in Unicode character with -d:
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/12231
|
|
||||||
|
|
||||||
Windows Unicode builds use homedir in current locale
|
|
||||||
|
|
||||||
The Windows Unicode builds of curl use the current locale, but expect Unicode
|
|
||||||
UTF-8 encoded paths for internal use such as open, access and stat. The
|
|
||||||
user's home directory is retrieved via curl_getenv in the current locale and
|
|
||||||
not as UTF-8 encoded Unicode.
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/pull/7252 and
|
|
||||||
https://github.com/curl/curl/pull/7281
|
|
||||||
|
|
||||||
Cannot handle Unicode arguments in non-Unicode builds on Windows
|
|
||||||
|
|
||||||
If a URL or filename cannot be encoded using the user's current codepage then
|
|
||||||
it can only be encoded properly in the Unicode character set. Windows uses
|
|
||||||
UTF-16 encoding for Unicode and stores it in wide characters, however curl
|
|
||||||
and libcurl are not equipped for that at the moment except when built with
|
|
||||||
_UNICODE and UNICODE defined. Except for Cygwin, Windows cannot use UTF-8 as
|
|
||||||
a locale.
|
|
||||||
|
|
||||||
https://curl.se/bug/?i=345
|
|
||||||
https://curl.se/bug/?i=731
|
|
||||||
https://curl.se/bug/?i=3747
|
|
||||||
|
|
||||||
NTLM authentication and Unicode
|
|
||||||
|
|
||||||
NTLM authentication involving Unicode username or password only works
|
|
||||||
properly if built with UNICODE defined together with the Schannel backend.
|
|
||||||
The original problem was mentioned in:
|
|
||||||
https://curl.se/mail/lib-2009-10/0024.html
|
|
||||||
https://curl.se/bug/view.cgi?id=896
|
|
||||||
|
|
||||||
The Schannel version verified to work as mentioned in
|
|
||||||
https://curl.se/mail/lib-2012-07/0073.html
|
|
||||||
|
|
||||||
6. Authentication
|
|
||||||
|
|
||||||
6.1 Digest auth-int for PUT/POST
|
|
||||||
|
|
||||||
We do not support auth-int for Digest using PUT or POST
|
|
||||||
|
|
||||||
6.2 MIT Kerberos for Windows build
|
|
||||||
|
|
||||||
libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's
|
|
||||||
library header files exporting symbols/macros that should be kept private to
|
|
||||||
the KfW library.
|
|
||||||
|
|
||||||
6.3 NTLM in system context uses wrong name
|
|
||||||
|
|
||||||
NTLM authentication using SSPI (on Windows) when (lib)curl is running in
|
|
||||||
"system context" makes it use wrong(?) username - at least when compared to
|
|
||||||
what winhttp does. See https://curl.se/bug/view.cgi?id=535
|
|
||||||
|
|
||||||
6.5 NTLM does not support password with Unicode 'SECTION SIGN' character
|
|
||||||
|
|
||||||
Code point: U+00A7
|
|
||||||
|
|
||||||
https://en.wikipedia.org/wiki/Section_sign
|
|
||||||
https://github.com/curl/curl/issues/2120
|
|
||||||
|
|
||||||
6.6 libcurl can fail to try alternatives with --proxy-any
|
|
||||||
|
|
||||||
When connecting via a proxy using --proxy-any, a failure to establish an
|
|
||||||
authentication causes libcurl to abort trying other options if the failed
|
|
||||||
method has a higher preference than the alternatives. As an example,
|
|
||||||
--proxy-any against a proxy which advertise Negotiate and NTLM, but which
|
|
||||||
fails to set up Kerberos authentication does not proceed to try
|
|
||||||
authentication using NTLM.
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/876
|
|
||||||
|
|
||||||
6.7 Do not clear digest for single realm
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/3267
|
|
||||||
|
|
||||||
6.9 SHA-256 digest not supported in Windows SSPI builds
|
|
||||||
|
|
||||||
Windows builds of curl that have SSPI enabled use the native Windows API calls
|
|
||||||
to create authentication strings. The call to InitializeSecurityContext fails
|
|
||||||
with SEC_E_QOP_NOT_SUPPORTED which causes curl to fail with CURLE_AUTH_ERROR.
|
|
||||||
|
|
||||||
Microsoft does not document supported digest algorithms and that SEC_E error
|
|
||||||
code is not a documented error for InitializeSecurityContext (digest).
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/6302
|
|
||||||
|
|
||||||
6.10 curl never completes Negotiate over HTTP
|
|
||||||
|
|
||||||
Apparently it is not working correctly...?
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/5235
|
|
||||||
|
|
||||||
6.11 Negotiate on Windows fails
|
|
||||||
|
|
||||||
When using --negotiate (or NTLM) with curl on Windows, SSL/TLS handshake
|
|
||||||
fails despite having a valid kerberos ticket cached. Works without any issue
|
|
||||||
in Unix/Linux.
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/5881
|
|
||||||
|
|
||||||
6.13 Negotiate authentication against Hadoop HDFS
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/8264
|
|
||||||
|
|
||||||
7. FTP
|
|
||||||
|
|
||||||
7.4 FTP with ACCT
|
|
||||||
|
|
||||||
When doing an operation over FTP that requires the ACCT command (but not when
|
|
||||||
logging in), the operation fails since libcurl does not detect this and thus
|
|
||||||
fails to issue the correct command: https://curl.se/bug/view.cgi?id=635
|
|
||||||
|
|
||||||
7.12 FTPS server compatibility on Windows with Schannel
|
|
||||||
|
|
||||||
FTPS is not widely used with the Schannel TLS backend and so there may be
|
|
||||||
more bugs compared to other TLS backends such as OpenSSL. In the past users
|
|
||||||
have reported hanging and failed connections. It is likely some changes to
|
|
||||||
curl since then fixed the issues. None of the reported issues can be
|
|
||||||
reproduced any longer.
|
|
||||||
|
|
||||||
If you encounter an issue connecting to your server via FTPS with the latest
|
|
||||||
curl and Schannel then please search for open issues or file a new issue.
|
|
||||||
|
|
||||||
9. SFTP and SCP
|
|
||||||
|
|
||||||
9.1 SFTP does not do CURLOPT_POSTQUOTE correct
|
|
||||||
|
|
||||||
When libcurl sends CURLOPT_POSTQUOTE commands when connected to an SFTP
|
|
||||||
server using the multi interface, the commands are not being sent correctly
|
|
||||||
and instead the connection is "cancelled" (the operation is considered done)
|
|
||||||
prematurely. There is a half-baked (busy-looping) patch provided in the bug
|
|
||||||
report but it cannot be accepted as-is. See
|
|
||||||
https://curl.se/bug/view.cgi?id=748
|
|
||||||
|
|
||||||
9.3 Remote recursive folder creation with SFTP
|
|
||||||
|
|
||||||
On this servers, the curl fails to create directories on the remote server
|
|
||||||
even when the CURLOPT_FTP_CREATE_MISSING_DIRS option is set.
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/5204
|
|
||||||
|
|
||||||
9.4 libssh blocking and infinite loop problem
|
|
||||||
|
|
||||||
In the SSH_SFTP_INIT state for libssh, the ssh session working mode is set to
|
|
||||||
blocking mode. If the network is suddenly disconnected during sftp
|
|
||||||
transmission, curl is stuck, even if curl is configured with a timeout.
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/8632
|
|
||||||
|
|
||||||
9.5 Cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!"
|
|
||||||
|
|
||||||
Running SCP and SFTP tests on Cygwin makes this warning message appear.
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/11244
|
|
||||||
|
|
||||||
10. Connection
|
|
||||||
|
|
||||||
10.1 --interface with link-scoped IPv6 address
|
|
||||||
|
|
||||||
When you give the `--interface` option telling curl to use a specific
|
|
||||||
interface for its outgoing traffic in combination with an IPv6 address in the
|
|
||||||
URL that uses a link-local scope, curl might pick the wrong address from the
|
|
||||||
named interface and the subsequent transfer fails.
|
|
||||||
|
|
||||||
Example command line:
|
|
||||||
|
|
||||||
curl --interface eth0 'http://[fe80:928d:xxff:fexx:xxxx]/'
|
|
||||||
|
|
||||||
The fact that the given IP address is link-scoped should probably be used as
|
|
||||||
input to somehow make curl make a better choice for this.
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/14782
|
|
||||||
|
|
||||||
10.2 Does not acknowledge getaddrinfo sorting policy
|
|
||||||
|
|
||||||
Even if a user edits /etc/gai.conf to prefer IPv4, curl still prefers and
|
|
||||||
tries IPv6 addresses first.
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/16718
|
|
||||||
|
|
||||||
|
|
||||||
10.3 SOCKS-SSPI discards the security context
|
|
||||||
|
|
||||||
After a successful SSPI/GSS-API exchange, the function queries and logs the
|
|
||||||
authenticated username and reports the supported data-protection level, but
|
|
||||||
then immediately deletes the negotiated SSPI security context and frees the
|
|
||||||
credentials before returning. The negotiated context is not stored on the
|
|
||||||
connection and is therefore never used to protect later SOCKS5 traffic.
|
|
||||||
|
|
||||||
11. Internals
|
|
||||||
|
|
||||||
11.1 gssapi library name + version is missing in curl_version_info()
|
|
||||||
|
|
||||||
The struct needs to be expanded and code added to store this info.
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/13492
|
|
||||||
|
|
||||||
11.2 error buffer not set if connection to multiple addresses fails
|
|
||||||
|
|
||||||
If you ask libcurl to resolve a hostname like example.com to IPv6 addresses
|
|
||||||
when you only have IPv4 connectivity. libcurl fails with
|
|
||||||
CURLE_COULDNT_CONNECT, but the error buffer set by CURLOPT_ERRORBUFFER
|
|
||||||
remains empty. Issue: https://github.com/curl/curl/issues/544
|
|
||||||
|
|
||||||
11.4 HTTP test server 'connection-monitor' problems
|
|
||||||
|
|
||||||
The 'connection-monitor' feature of the sws HTTP test server does not work
|
|
||||||
properly if some tests are run in unexpected order. Like 1509 and then 1525.
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/868
|
|
||||||
|
|
||||||
11.5 Connection information when using TCP Fast Open
|
|
||||||
|
|
||||||
CURLINFO_LOCAL_PORT (and possibly a few other) fails when TCP Fast Open is
|
|
||||||
enabled.
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/1332 and
|
|
||||||
https://github.com/curl/curl/issues/4296
|
|
||||||
|
|
||||||
11.6 test cases sometimes timeout
|
|
||||||
|
|
||||||
Occasionally, one of the tests timeouts. Inexplicably.
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/13350
|
|
||||||
|
|
||||||
11.7 CURLOPT_CONNECT_TO does not work for HTTPS proxy
|
|
||||||
|
|
||||||
It is unclear if the same option should even cover the proxy connection or if
|
|
||||||
if requires a separate option.
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/14481
|
|
||||||
|
|
||||||
11.8 WinIDN test failures
|
|
||||||
|
|
||||||
Test 165 disabled when built with WinIDN.
|
|
||||||
|
|
||||||
11.9 setting a disabled option should return CURLE_NOT_BUILT_IN
|
|
||||||
|
|
||||||
When curl has been built with specific features or protocols disabled,
|
|
||||||
setting such options with curl_easy_setopt() should rather return
|
|
||||||
CURLE_NOT_BUILT_IN instead of CURLE_UNKNOWN_OPTION to signal the difference
|
|
||||||
to the application
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/15472
|
|
||||||
|
|
||||||
12. LDAP
|
|
||||||
|
|
||||||
12.1 OpenLDAP hangs after returning results
|
|
||||||
|
|
||||||
By configuration defaults, OpenLDAP automatically chase referrals on
|
|
||||||
secondary socket descriptors. The OpenLDAP backend is asynchronous and thus
|
|
||||||
should monitor all socket descriptors involved. Currently, these secondary
|
|
||||||
descriptors are not monitored, causing OpenLDAP library to never receive
|
|
||||||
data from them.
|
|
||||||
|
|
||||||
As a temporary workaround, disable referrals chasing by configuration.
|
|
||||||
|
|
||||||
The fix is not easy: proper automatic referrals chasing requires a
|
|
||||||
synchronous bind callback and monitoring an arbitrary number of socket
|
|
||||||
descriptors for a single easy handle (currently limited to 5).
|
|
||||||
|
|
||||||
Generic LDAP is synchronous: OK.
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/622 and
|
|
||||||
https://curl.se/mail/lib-2016-01/0101.html
|
|
||||||
|
|
||||||
12.2 LDAP on Windows does authentication wrong?
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/3116
|
|
||||||
|
|
||||||
12.3 LDAP on Windows does not work
|
|
||||||
|
|
||||||
A simple curl command line getting "ldap://ldap.forumsys.com" returns an
|
|
||||||
error that says "no memory" !
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/4261
|
|
||||||
|
|
||||||
12.4 LDAPS requests to ActiveDirectory server hang
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/9580
|
|
||||||
|
|
||||||
13. TCP/IP
|
|
||||||
|
|
||||||
13.1 telnet code does not handle partial writes properly
|
|
||||||
|
|
||||||
It probably does not happen too easily because of how slow and infrequent
|
|
||||||
sends are normally performed.
|
|
||||||
|
|
||||||
13.2 Trying local ports fails on Windows
|
|
||||||
|
|
||||||
This makes '--local-port [range]' to not work since curl cannot properly
|
|
||||||
detect if a port is already in use, so it tries the first port, uses that and
|
|
||||||
then subsequently fails anyway if that was actually in use.
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/8112
|
|
||||||
|
|
||||||
15. CMake
|
|
||||||
|
|
||||||
15.1 cmake outputs: no version information available
|
|
||||||
|
|
||||||
Something in the SONAME generation seems to be wrong in the cmake build.
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/11158
|
|
||||||
|
|
||||||
15.6 uses -lpthread instead of Threads::Threads
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/6166
|
|
||||||
|
|
||||||
15.7 generated .pc file contains strange entries
|
|
||||||
|
|
||||||
The Libs.private field of the generated .pc file contains -lgcc -lgcc_s -lc
|
|
||||||
-lgcc -lgcc_s
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/6167
|
|
||||||
|
|
||||||
15.13 CMake build with MIT Kerberos does not work
|
|
||||||
|
|
||||||
Minimum CMake version was bumped in curl 7.71.0 (#5358) Since CMake 3.2
|
|
||||||
try_compile started respecting the CMAKE_EXE_FLAGS. The code dealing with
|
|
||||||
MIT Kerberos detection sets few variables to potentially weird mix of space,
|
|
||||||
and ;-separated flags. It had to blow up at some point. All the CMake checks
|
|
||||||
that involve compilation are doomed from that point, the configured tree
|
|
||||||
cannot be built.
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/6904
|
|
||||||
|
|
||||||
16. aws-sigv4
|
|
||||||
|
|
||||||
16.2 aws-sigv4 does not handle multipart/form-data correctly
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/13351
|
|
||||||
|
|
||||||
17. HTTP/2
|
|
||||||
|
|
||||||
17.1 HTTP/2 prior knowledge over proxy
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/12641
|
|
||||||
|
|
||||||
17.2 HTTP/2 frames while in the connection pool kill reuse
|
|
||||||
|
|
||||||
If the server sends HTTP/2 frames (like for example an HTTP/2 PING frame) to
|
|
||||||
curl while the connection is held in curl's connection pool, the socket is
|
|
||||||
found readable when considered for reuse and that makes curl think it is dead
|
|
||||||
and then it is closed and a new connection gets created instead.
|
|
||||||
|
|
||||||
This is *best* fixed by adding monitoring to connections while they are kept
|
|
||||||
in the pool so that pings can be responded to appropriately.
|
|
||||||
|
|
||||||
17.3 ENHANCE_YOUR_CALM causes infinite retries
|
|
||||||
|
|
||||||
Infinite retries with 2 parallel requests on one connection receiving GOAWAY
|
|
||||||
with ENHANCE_YOUR_CALM error code.
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/5119
|
|
||||||
|
|
||||||
17.4 HTTP/2 + TLS spends a lot of time in recv
|
|
||||||
|
|
||||||
It has been observed that by making the speed limit less accurate we could
|
|
||||||
improve this performance. (by reverting
|
|
||||||
https://github.com/curl/curl/commit/db5c9f4f9e0779b49624752b135281a0717b277b)
|
|
||||||
Can we find a golden middle ground?
|
|
||||||
|
|
||||||
See https://curl.se/mail/lib-2024-05/0026.html and
|
|
||||||
https://github.com/curl/curl/issues/13416
|
|
||||||
|
|
||||||
18. HTTP/3
|
|
||||||
|
|
||||||
18.1 connection migration does not work
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/7695
|
|
||||||
|
|
||||||
18.2 quiche: QUIC connection is draining
|
|
||||||
|
|
||||||
The transfer ends with error "QUIC connection is draining".
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/12037
|
|
||||||
|
|
||||||
18.3 OpenSSL-QUIC problems on google.com
|
|
||||||
|
|
||||||
With some specific Google servers, and seemingly timing dependent, the
|
|
||||||
OpenSSL-QUIC backend seems to not actually send off the HTTP/3 request which
|
|
||||||
makes the QUIC connection just sit idle until killed by the server. curl or
|
|
||||||
OpenSSL bug?
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/18336
|
|
||||||
|
|
||||||
19. RTSP
|
|
||||||
|
|
||||||
19.1 Some methods do not support response bodies
|
|
||||||
|
|
||||||
The RTSP implementation is written to assume that a number of RTSP methods
|
|
||||||
always get responses without bodies, even though there seems to be no
|
|
||||||
indication in the RFC that this is always the case.
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/12414
|
|
||||||
546
docs/KNOWN_BUGS.md
Normal file
546
docs/KNOWN_BUGS.md
Normal file
@@ -0,0 +1,546 @@
|
|||||||
|
<!--
|
||||||
|
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
|
|
||||||
|
SPDX-License-Identifier: curl
|
||||||
|
-->
|
||||||
|
|
||||||
|
# Known bugs intro
|
||||||
|
|
||||||
|
These are problems and bugs known to exist at the time of this release. Feel
|
||||||
|
free to join in and help us correct one or more of these. Also be sure to
|
||||||
|
check the changelog of the current development status, as one or more of these
|
||||||
|
problems may have been fixed or changed somewhat since this was written.
|
||||||
|
|
||||||
|
# TLS
|
||||||
|
|
||||||
|
## IMAPS connection fails with Rustls error
|
||||||
|
|
||||||
|
[curl issue 10457](https://github.com/curl/curl/issues/10457)
|
||||||
|
|
||||||
|
## Access violation sending client cert with Schannel
|
||||||
|
|
||||||
|
When using Schannel to do client certs, curl sets `PKCS12_NO_PERSIST_KEY` to
|
||||||
|
avoid leaking the private key into the filesystem. Unfortunately that flag
|
||||||
|
instead seems to trigger a crash.
|
||||||
|
|
||||||
|
See [curl issue 17626](https://github.com/curl/curl/issues/17626)
|
||||||
|
|
||||||
|
## Client cert handling with Issuer `DN` differs between backends
|
||||||
|
|
||||||
|
When the specified client certificate does not match any of the
|
||||||
|
server-specified `DN` fields, the OpenSSL and GnuTLS backends behave
|
||||||
|
differently. The GitHub discussion may contain a solution.
|
||||||
|
|
||||||
|
See [curl issue 1411](https://github.com/curl/curl/issues/1411)
|
||||||
|
|
||||||
|
## Client cert (MTLS) issues with Schannel
|
||||||
|
|
||||||
|
See [curl issue 3145](https://github.com/curl/curl/issues/3145)
|
||||||
|
|
||||||
|
## Schannel TLS 1.2 handshake bug in old Windows versions
|
||||||
|
|
||||||
|
In old versions of Windows such as 7 and 8.1 the Schannel TLS 1.2 handshake
|
||||||
|
implementation likely has a bug that can rarely cause the key exchange to
|
||||||
|
fail, resulting in error SEC_E_BUFFER_TOO_SMALL or SEC_E_MESSAGE_ALTERED.
|
||||||
|
|
||||||
|
[curl issue 5488](https://github.com/curl/curl/issues/5488)
|
||||||
|
|
||||||
|
## `CURLOPT_CERTINFO` results in `CURLE_OUT_OF_MEMORY` with Schannel
|
||||||
|
|
||||||
|
[curl issue 8741](https://github.com/curl/curl/issues/8741)
|
||||||
|
|
||||||
|
## mbedTLS and CURLE_AGAIN handling
|
||||||
|
|
||||||
|
[curl issue 15801](https://github.com/curl/curl/issues/15801)
|
||||||
|
|
||||||
|
# Email protocols
|
||||||
|
|
||||||
|
## IMAP `SEARCH ALL` truncated response
|
||||||
|
|
||||||
|
IMAP `SEARCH ALL` truncates output on large boxes. "A quick search of the code
|
||||||
|
reveals that `pingpong.c` contains some truncation code, at line 408, when it
|
||||||
|
deems the server response to be too large truncating it to 40 characters"
|
||||||
|
|
||||||
|
https://curl.se/bug/view.cgi?id=1366
|
||||||
|
|
||||||
|
## No disconnect command
|
||||||
|
|
||||||
|
The disconnect commands (`LOGOUT` and `QUIT`) may not be sent by IMAP, POP3
|
||||||
|
and SMTP if a failure occurs during the authentication phase of a connection.
|
||||||
|
|
||||||
|
## `AUTH PLAIN` for SMTP is not working on all servers
|
||||||
|
|
||||||
|
Specifying `--login-options AUTH=PLAIN` on the command line does not seem to
|
||||||
|
work correctly.
|
||||||
|
|
||||||
|
See [curl issue 4080](https://github.com/curl/curl/issues/4080)
|
||||||
|
|
||||||
|
## `APOP` authentication fails on POP3
|
||||||
|
|
||||||
|
See [curl issue 10073](https://github.com/curl/curl/issues/10073)
|
||||||
|
|
||||||
|
## POP3 issue when reading small chunks
|
||||||
|
|
||||||
|
CURL_DBG_SOCK_RMAX=4 ./runtests.pl -v 982
|
||||||
|
|
||||||
|
See [curl issue 12063](https://github.com/curl/curl/issues/12063)
|
||||||
|
|
||||||
|
# Command line
|
||||||
|
|
||||||
|
## `-T /dev/stdin` may upload with an incorrect content length
|
||||||
|
|
||||||
|
`-T` stats the path to figure out its size in bytes to use it as
|
||||||
|
`Content-Length` if it is a regular file.
|
||||||
|
|
||||||
|
The problem with that is that on BSD and some other UNIX systems (not Linux),
|
||||||
|
open(path) may not give you a file descriptor with a 0 offset from the start
|
||||||
|
of the file.
|
||||||
|
|
||||||
|
See [curl issue 12177](https://github.com/curl/curl/issues/12177)
|
||||||
|
|
||||||
|
## `-T -` always uploads chunked
|
||||||
|
|
||||||
|
When the `<` shell operator is used. curl should realize that stdin is a
|
||||||
|
regular file in this case, and that it can do a non-chunked upload, like it
|
||||||
|
would do if you used `-T` file.
|
||||||
|
|
||||||
|
See [curl issue 12171](https://github.com/curl/curl/issues/12171)
|
||||||
|
|
||||||
|
# Build and portability issues
|
||||||
|
|
||||||
|
## OS400 port requires deprecated IBM library
|
||||||
|
|
||||||
|
curl for OS400 requires `QADRT` to build, which provides ASCII wrappers for
|
||||||
|
libc/POSIX functions in the ILE, but IBM no longer supports or even offers
|
||||||
|
this library to download.
|
||||||
|
|
||||||
|
See [curl issue 5176](https://github.com/curl/curl/issues/5176)
|
||||||
|
|
||||||
|
## `curl-config --libs` contains private details
|
||||||
|
|
||||||
|
`curl-config --libs` include details set in `LDFLAGS` when configure is run
|
||||||
|
that might be needed only for building libcurl. Further, `curl-config
|
||||||
|
--cflags` suffers from the same effects with `CFLAGS`/`CPPFLAGS`.
|
||||||
|
|
||||||
|
## `LDFLAGS` passed too late making libs linked incorrectly
|
||||||
|
|
||||||
|
Compiling latest curl on HP-UX and linking against a custom OpenSSL (which is
|
||||||
|
on the default loader/linker path), fails because the generated Makefile has
|
||||||
|
`LDFLAGS` passed on after `LIBS`.
|
||||||
|
|
||||||
|
See [curl issue 14893](https://github.com/curl/curl/issues/14893)
|
||||||
|
|
||||||
|
## Cygwin: make install installs curl-config.1 twice
|
||||||
|
|
||||||
|
[curl issue 8839](https://github.com/curl/curl/issues/8839)
|
||||||
|
|
||||||
|
## flaky CI builds
|
||||||
|
|
||||||
|
We run many CI builds for each commit and PR on GitHub, and especially a
|
||||||
|
number of the Windows builds are flaky. This means that we rarely get all CI
|
||||||
|
builds go green and complete without errors. This is unfortunate as it makes
|
||||||
|
us sometimes miss actual build problems and it is surprising to newcomers to
|
||||||
|
the project who (rightfully) do not expect this.
|
||||||
|
|
||||||
|
See [curl issue 6972](https://github.com/curl/curl/issues/6972)
|
||||||
|
|
||||||
|
## long paths are not fully supported on Windows
|
||||||
|
|
||||||
|
curl on Windows cannot access long paths (paths longer than 260 characters).
|
||||||
|
However, as a workaround, the Windows path prefix `\\?\` which disables all
|
||||||
|
path interpretation may work to allow curl to access the path. For example:
|
||||||
|
`\\?\c:\longpath`.
|
||||||
|
|
||||||
|
See [curl issue 8361](https://github.com/curl/curl/issues/8361)
|
||||||
|
|
||||||
|
## Unicode on Windows
|
||||||
|
|
||||||
|
Passing in a Unicode filename with -o:
|
||||||
|
|
||||||
|
[curl issue 11461](https://github.com/curl/curl/issues/11461)
|
||||||
|
|
||||||
|
Passing in Unicode character with -d:
|
||||||
|
|
||||||
|
[curl issue 12231](https://github.com/curl/curl/issues/12231)
|
||||||
|
|
||||||
|
Windows Unicode builds use the home directory in current locale.
|
||||||
|
|
||||||
|
The Windows Unicode builds of curl use the current locale, but expect Unicode
|
||||||
|
UTF-8 encoded paths for internal use such as open, access and stat. The user's
|
||||||
|
home directory is retrieved via curl_getenv in the current locale and not as
|
||||||
|
UTF-8 encoded Unicode.
|
||||||
|
|
||||||
|
See [curl pull request 7252](https://github.com/curl/curl/pull/7252) and [curl pull request 7281](https://github.com/curl/curl/pull/7281)
|
||||||
|
|
||||||
|
Cannot handle Unicode arguments in non-Unicode builds on Windows
|
||||||
|
|
||||||
|
If a URL or filename cannot be encoded using the user's current code page then
|
||||||
|
it can only be encoded properly in the Unicode character set. Windows uses
|
||||||
|
UTF-16 encoding for Unicode and stores it in wide characters, however curl and
|
||||||
|
libcurl are not equipped for that at the moment except when built with
|
||||||
|
_UNICODE and UNICODE defined. Except for Cygwin, Windows cannot use UTF-8 as a
|
||||||
|
locale.
|
||||||
|
|
||||||
|
https://curl.se/bug/?i=345
|
||||||
|
https://curl.se/bug/?i=731
|
||||||
|
https://curl.se/bug/?i=3747
|
||||||
|
|
||||||
|
NTLM authentication and Unicode
|
||||||
|
|
||||||
|
NTLM authentication involving Unicode username or password only works properly
|
||||||
|
if built with UNICODE defined together with the Schannel backend. The original
|
||||||
|
problem was mentioned in: https://curl.se/mail/lib-2009-10/0024.html and
|
||||||
|
https://curl.se/bug/view.cgi?id=896
|
||||||
|
|
||||||
|
The Schannel version verified to work as mentioned in
|
||||||
|
https://curl.se/mail/lib-2012-07/0073.html
|
||||||
|
|
||||||
|
# Authentication
|
||||||
|
|
||||||
|
## Digest `auth-int` for PUT/POST
|
||||||
|
|
||||||
|
We do not support auth-int for Digest using PUT or POST
|
||||||
|
|
||||||
|
## MIT Kerberos for Windows build
|
||||||
|
|
||||||
|
libcurl fails to build with MIT Kerberos for Windows (`KfW`) due to its
|
||||||
|
library header files exporting symbols/macros that should be kept private to
|
||||||
|
the library.
|
||||||
|
|
||||||
|
## NTLM in system context uses wrong name
|
||||||
|
|
||||||
|
NTLM authentication using SSPI (on Windows) when (lib)curl is running in
|
||||||
|
"system context" makes it use wrong(?) username - at least when compared to
|
||||||
|
what `winhttp` does. See https://curl.se/bug/view.cgi?id=535
|
||||||
|
|
||||||
|
## NTLM does not support password with Unicode 'SECTION SIGN' character
|
||||||
|
|
||||||
|
https://en.wikipedia.org/wiki/Section_sign
|
||||||
|
[curl issue 2120](https://github.com/curl/curl/issues/2120)
|
||||||
|
|
||||||
|
## libcurl can fail to try alternatives with `--proxy-any`
|
||||||
|
|
||||||
|
When connecting via a proxy using `--proxy-any`, a failure to establish an
|
||||||
|
authentication causes libcurl to abort trying other options if the failed
|
||||||
|
method has a higher preference than the alternatives. As an example,
|
||||||
|
`--proxy-any` against a proxy which advertise Negotiate and NTLM, but which
|
||||||
|
fails to set up Kerberos authentication does not proceed to try authentication
|
||||||
|
using NTLM.
|
||||||
|
|
||||||
|
[curl issue 876](https://github.com/curl/curl/issues/876)
|
||||||
|
|
||||||
|
## Do not clear digest for single realm
|
||||||
|
|
||||||
|
[curl issue 3267](https://github.com/curl/curl/issues/3267)
|
||||||
|
|
||||||
|
## SHA-256 digest not supported in Windows SSPI builds
|
||||||
|
|
||||||
|
Windows builds of curl that have SSPI enabled use the native Windows API calls
|
||||||
|
to create authentication strings. The call to `InitializeSecurityContext` fails
|
||||||
|
with `SEC_E_QOP_NOT_SUPPORTED` which causes curl to fail with
|
||||||
|
`CURLE_AUTH_ERROR`.
|
||||||
|
|
||||||
|
Microsoft does not document supported digest algorithms and that `SEC_E` error
|
||||||
|
code is not a documented error for `InitializeSecurityContext` (digest).
|
||||||
|
|
||||||
|
[curl issue 6302](https://github.com/curl/curl/issues/6302)
|
||||||
|
|
||||||
|
## curl never completes Negotiate over HTTP
|
||||||
|
|
||||||
|
Apparently it is not working correctly...?
|
||||||
|
|
||||||
|
See [curl issue 5235](https://github.com/curl/curl/issues/5235)
|
||||||
|
|
||||||
|
## Negotiate on Windows fails
|
||||||
|
|
||||||
|
When using `--negotiate` (or NTLM) with curl on Windows, SSL/TLS handshake
|
||||||
|
fails despite having a valid kerberos ticket cached. Works without any issue
|
||||||
|
in Unix/Linux.
|
||||||
|
|
||||||
|
[curl issue 5881](https://github.com/curl/curl/issues/5881)
|
||||||
|
|
||||||
|
## Negotiate authentication against Hadoop
|
||||||
|
|
||||||
|
[curl issue 8264](https://github.com/curl/curl/issues/8264)
|
||||||
|
|
||||||
|
# FTP
|
||||||
|
|
||||||
|
## FTP with ACCT
|
||||||
|
|
||||||
|
When doing an operation over FTP that requires the `ACCT` command (but not when
|
||||||
|
logging in), the operation fails since libcurl does not detect this and thus
|
||||||
|
fails to issue the correct command: https://curl.se/bug/view.cgi?id=635
|
||||||
|
|
||||||
|
## FTPS server compatibility on Windows with Schannel
|
||||||
|
|
||||||
|
FTPS is not widely used with the Schannel TLS backend and so there may be more
|
||||||
|
bugs compared to other TLS backends such as OpenSSL. In the past users have
|
||||||
|
reported hanging and failed connections. It is likely some changes to curl
|
||||||
|
since then fixed the issues. None of the reported issues can be reproduced any
|
||||||
|
longer.
|
||||||
|
|
||||||
|
If you encounter an issue connecting to your server via FTPS with the latest
|
||||||
|
curl and Schannel then please search for open issues or file a new issue.
|
||||||
|
|
||||||
|
# SFTP and SCP
|
||||||
|
|
||||||
|
## SFTP does not do `CURLOPT_POSTQUOTE` correct
|
||||||
|
|
||||||
|
When libcurl sends `CURLOPT_POSTQUOTE` commands when connected to an SFTP
|
||||||
|
server using the multi interface, the commands are not being sent correctly
|
||||||
|
and instead the connection is canceled (the operation is considered done)
|
||||||
|
prematurely. There is a half-baked (busy-looping) patch provided in the bug
|
||||||
|
report but it cannot be accepted as-is. See
|
||||||
|
https://curl.se/bug/view.cgi?id=748
|
||||||
|
|
||||||
|
## Remote recursive folder creation with SFTP
|
||||||
|
|
||||||
|
On this servers, the curl fails to create directories on the remote server
|
||||||
|
even when the `CURLOPT_FTP_CREATE_MISSING_DIRS` option is set.
|
||||||
|
|
||||||
|
See [curl issue 5204](https://github.com/curl/curl/issues/5204)
|
||||||
|
|
||||||
|
## libssh blocking and infinite loop problem
|
||||||
|
|
||||||
|
In the `SSH_SFTP_INIT` state for libssh, the ssh session working mode is set
|
||||||
|
to blocking mode. If the network is suddenly disconnected during sftp
|
||||||
|
transmission, curl is stuck, even if curl is configured with a timeout.
|
||||||
|
|
||||||
|
[curl issue 8632](https://github.com/curl/curl/issues/8632)
|
||||||
|
|
||||||
|
## Cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!"
|
||||||
|
|
||||||
|
Running SCP and SFTP tests on Cygwin makes this warning message appear.
|
||||||
|
|
||||||
|
[curl issue 11244](https://github.com/curl/curl/issues/11244)
|
||||||
|
|
||||||
|
# Connection
|
||||||
|
|
||||||
|
## `--interface` with link-scoped IPv6 address
|
||||||
|
|
||||||
|
When you give the `--interface` option telling curl to use a specific
|
||||||
|
interface for its outgoing traffic in combination with an IPv6 address in the
|
||||||
|
URL that uses a link-local scope, curl might pick the wrong address from the
|
||||||
|
named interface and the subsequent transfer fails.
|
||||||
|
|
||||||
|
Example command line:
|
||||||
|
|
||||||
|
curl --interface eth0 'http://[fe80:928d:xxff:fexx:xxxx]/'
|
||||||
|
|
||||||
|
The fact that the given IP address is link-scoped should probably be used as
|
||||||
|
input to somehow make curl make a better choice for this.
|
||||||
|
|
||||||
|
[curl issue 14782](https://github.com/curl/curl/issues/14782)
|
||||||
|
|
||||||
|
## Does not acknowledge getaddrinfo sorting policy
|
||||||
|
|
||||||
|
Even if a user edits `/etc/gai.conf` to prefer IPv4, curl still prefers and
|
||||||
|
tries IPv6 addresses first.
|
||||||
|
|
||||||
|
[curl issue 16718](https://github.com/curl/curl/issues/16718)
|
||||||
|
|
||||||
|
## SOCKS-SSPI discards the security context
|
||||||
|
|
||||||
|
After a successful SSPI/GSS-API exchange, the function queries and logs the
|
||||||
|
authenticated username and reports the supported data-protection level, but
|
||||||
|
then immediately deletes the negotiated SSPI security context and frees the
|
||||||
|
credentials before returning. The negotiated context is not stored on the
|
||||||
|
connection and is therefore never used to protect later SOCKS5 traffic.
|
||||||
|
|
||||||
|
# Internals
|
||||||
|
|
||||||
|
## GSSAPI library name + version is missing in `curl_version_info()`
|
||||||
|
|
||||||
|
The struct needs to be expanded and code added to store this info.
|
||||||
|
|
||||||
|
See [curl issue 13492](https://github.com/curl/curl/issues/13492)
|
||||||
|
|
||||||
|
## error buffer not set if connection to multiple addresses fails
|
||||||
|
|
||||||
|
If you ask libcurl to resolve a hostname like example.com to IPv6 addresses
|
||||||
|
when you only have IPv4 connectivity. libcurl fails with
|
||||||
|
`CURLE_COULDNT_CONNECT`, but the error buffer set by `CURLOPT_ERRORBUFFER`
|
||||||
|
remains empty. Issue: [curl issue 544](https://github.com/curl/curl/issues/544)
|
||||||
|
|
||||||
|
## HTTP test server 'connection-monitor' problems
|
||||||
|
|
||||||
|
The `connection-monitor` feature of the HTTP test server does not work
|
||||||
|
properly if some tests are run in unexpected order. Like 1509 and then 1525.
|
||||||
|
|
||||||
|
See [curl issue 868](https://github.com/curl/curl/issues/868)
|
||||||
|
|
||||||
|
## Connection information when using TCP Fast Open
|
||||||
|
|
||||||
|
`CURLINFO_LOCAL_PORT` (and possibly a few other) fails when TCP Fast Open is
|
||||||
|
enabled.
|
||||||
|
|
||||||
|
See [curl issue 1332](https://github.com/curl/curl/issues/1332) and
|
||||||
|
[curl issue 4296](https://github.com/curl/curl/issues/4296)
|
||||||
|
|
||||||
|
## test cases sometimes timeout
|
||||||
|
|
||||||
|
Occasionally, one of the tests timeouts. Inexplicably.
|
||||||
|
|
||||||
|
See [curl issue 13350](https://github.com/curl/curl/issues/13350)
|
||||||
|
|
||||||
|
## `CURLOPT_CONNECT_TO` does not work for HTTPS proxy
|
||||||
|
|
||||||
|
It is unclear if the same option should even cover the proxy connection or if
|
||||||
|
if requires a separate option.
|
||||||
|
|
||||||
|
See [curl issue 14481](https://github.com/curl/curl/issues/14481)
|
||||||
|
|
||||||
|
## WinIDN test failures
|
||||||
|
|
||||||
|
Test 165 disabled when built with WinIDN.
|
||||||
|
|
||||||
|
## setting a disabled option should return `CURLE_NOT_BUILT_IN`
|
||||||
|
|
||||||
|
When curl has been built with specific features or protocols disabled, setting
|
||||||
|
such options with `curl_easy_setopt()` should rather return
|
||||||
|
`CURLE_NOT_BUILT_IN` instead of `CURLE_UNKNOWN_OPTION` to signal the
|
||||||
|
difference to the application
|
||||||
|
|
||||||
|
See [curl issue 15472](https://github.com/curl/curl/issues/15472)
|
||||||
|
|
||||||
|
# LDAP
|
||||||
|
|
||||||
|
## OpenLDAP hangs after returning results
|
||||||
|
|
||||||
|
By configuration defaults, OpenLDAP automatically chase referrals on secondary
|
||||||
|
socket descriptors. The OpenLDAP backend is asynchronous and thus should
|
||||||
|
monitor all socket descriptors involved. Currently, these secondary
|
||||||
|
descriptors are not monitored, causing OpenLDAP library to never receive data
|
||||||
|
from them.
|
||||||
|
|
||||||
|
As a temporary workaround, disable referrals chasing by configuration.
|
||||||
|
|
||||||
|
The fix is not easy: proper automatic referrals chasing requires a synchronous
|
||||||
|
bind callback and monitoring an arbitrary number of socket descriptors for a
|
||||||
|
single easy handle (currently limited to 5).
|
||||||
|
|
||||||
|
Generic LDAP is synchronous: OK.
|
||||||
|
|
||||||
|
See [curl issue 622](https://github.com/curl/curl/issues/622) and
|
||||||
|
https://curl.se/mail/lib-2016-01/0101.html
|
||||||
|
|
||||||
|
## LDAP on Windows does authentication wrong?
|
||||||
|
|
||||||
|
[curl issue 3116](https://github.com/curl/curl/issues/3116)
|
||||||
|
|
||||||
|
## LDAP on Windows does not work
|
||||||
|
|
||||||
|
A simple curl command line getting `ldap://ldap.forumsys.com` returns an error
|
||||||
|
that says `no memory` !
|
||||||
|
|
||||||
|
[curl issue 4261](https://github.com/curl/curl/issues/4261)
|
||||||
|
|
||||||
|
## LDAPS requests to Active Directory server hang
|
||||||
|
|
||||||
|
[curl issue 9580](https://github.com/curl/curl/issues/9580)
|
||||||
|
|
||||||
|
# TCP/IP
|
||||||
|
|
||||||
|
## telnet code does not handle partial writes properly
|
||||||
|
|
||||||
|
It probably does not happen too easily because of how slow and infrequent
|
||||||
|
sends are normally performed.
|
||||||
|
|
||||||
|
## Trying local ports fails on Windows
|
||||||
|
|
||||||
|
This makes `--local-port [range]` to not work since curl cannot properly
|
||||||
|
detect if a port is already in use, so it tries the first port, uses that and
|
||||||
|
then subsequently fails anyway if that was actually in use.
|
||||||
|
|
||||||
|
[curl issue 8112](https://github.com/curl/curl/issues/8112)
|
||||||
|
|
||||||
|
# CMake
|
||||||
|
|
||||||
|
## cmake outputs: no version information available
|
||||||
|
|
||||||
|
Something in the SONAME generation seems to be wrong in the cmake build.
|
||||||
|
|
||||||
|
[curl issue 11158](https://github.com/curl/curl/issues/11158)
|
||||||
|
|
||||||
|
## uses `-lpthread` instead of `Threads::Threads`
|
||||||
|
|
||||||
|
See [curl issue 6166](https://github.com/curl/curl/issues/6166)
|
||||||
|
|
||||||
|
## generated `.pc` file contains strange entries
|
||||||
|
|
||||||
|
The `Libs.private` field of the generated `.pc` file contains `-lgcc -lgcc_s
|
||||||
|
-lc -lgcc -lgcc_s`.
|
||||||
|
|
||||||
|
See [curl issue 6167](https://github.com/curl/curl/issues/6167)
|
||||||
|
|
||||||
|
## CMake build with MIT Kerberos does not work
|
||||||
|
|
||||||
|
Minimum CMake version was bumped in curl 7.71.0 (#5358) Since CMake 3.2
|
||||||
|
try_compile started respecting the `CMAKE_EXE_FLAGS`. The code dealing with
|
||||||
|
MIT Kerberos detection sets few variables to potentially weird mix of space,
|
||||||
|
and ;-separated flags. It had to blow up at some point. All the CMake checks
|
||||||
|
that involve compilation are doomed from that point, the configured tree
|
||||||
|
cannot be built.
|
||||||
|
|
||||||
|
[curl issue 6904](https://github.com/curl/curl/issues/6904)
|
||||||
|
|
||||||
|
# Authentication
|
||||||
|
|
||||||
|
## `--aws-sigv4` does not handle multipart/form-data correctly
|
||||||
|
|
||||||
|
[curl issue 13351](https://github.com/curl/curl/issues/13351)
|
||||||
|
|
||||||
|
# HTTP/2
|
||||||
|
|
||||||
|
## HTTP/2 prior knowledge over proxy
|
||||||
|
|
||||||
|
[curl issue 12641](https://github.com/curl/curl/issues/12641)
|
||||||
|
|
||||||
|
## HTTP/2 frames while in the connection pool kill reuse
|
||||||
|
|
||||||
|
If the server sends HTTP/2 frames (like for example an HTTP/2 PING frame) to
|
||||||
|
curl while the connection is held in curl's connection pool, the socket is
|
||||||
|
found readable when considered for reuse and that makes curl think it is dead
|
||||||
|
and then it is closed and a new connection gets created instead.
|
||||||
|
|
||||||
|
This is *best* fixed by adding monitoring to connections while they are kept
|
||||||
|
in the pool so that pings can be responded to appropriately.
|
||||||
|
|
||||||
|
## `ENHANCE_YOUR_CALM` causes infinite retries
|
||||||
|
|
||||||
|
Infinite retries with 2 parallel requests on one connection receiving `GOAWAY`
|
||||||
|
with `ENHANCE_YOUR_CALM` error code.
|
||||||
|
|
||||||
|
See [curl issue 5119](https://github.com/curl/curl/issues/5119)
|
||||||
|
|
||||||
|
## HTTP/2 + TLS spends a lot of time in recv
|
||||||
|
|
||||||
|
It has been observed that by making the speed limit less accurate we could
|
||||||
|
improve this performance. (by reverting
|
||||||
|
[db5c9f4f9e0779](https://github.com/curl/curl/commit/db5c9f4f9e0779b49624752b135281a0717b277b))
|
||||||
|
Can we find a golden middle ground?
|
||||||
|
|
||||||
|
See https://curl.se/mail/lib-2024-05/0026.html and
|
||||||
|
[curl issue 13416](https://github.com/curl/curl/issues/13416)
|
||||||
|
|
||||||
|
# HTTP/3
|
||||||
|
|
||||||
|
## connection migration does not work
|
||||||
|
|
||||||
|
[curl issue 7695](https://github.com/curl/curl/issues/7695)
|
||||||
|
|
||||||
|
## quiche: QUIC connection is draining
|
||||||
|
|
||||||
|
The transfer ends with error "QUIC connection is draining".
|
||||||
|
|
||||||
|
[curl issue 12037](https://github.com/curl/curl/issues/12037)
|
||||||
|
|
||||||
|
# RTSP
|
||||||
|
|
||||||
|
## Some methods do not support response bodies
|
||||||
|
|
||||||
|
The RTSP implementation is written to assume that a number of RTSP methods
|
||||||
|
always get responses without bodies, even though there seems to be no
|
||||||
|
indication in the RFC that this is always the case.
|
||||||
|
|
||||||
|
[curl issue 12414](https://github.com/curl/curl/issues/12414)
|
||||||
@@ -93,7 +93,7 @@ EXTRA_DIST = \
|
|||||||
EARLY-RELEASE.md \
|
EARLY-RELEASE.md \
|
||||||
ECH.md \
|
ECH.md \
|
||||||
EXPERIMENTAL.md \
|
EXPERIMENTAL.md \
|
||||||
FAQ \
|
FAQ.md \
|
||||||
FEATURES.md \
|
FEATURES.md \
|
||||||
GOVERNANCE.md \
|
GOVERNANCE.md \
|
||||||
HELP-US.md \
|
HELP-US.md \
|
||||||
@@ -108,7 +108,7 @@ EXTRA_DIST = \
|
|||||||
INSTALL.md \
|
INSTALL.md \
|
||||||
INTERNALS.md \
|
INTERNALS.md \
|
||||||
IPFS.md \
|
IPFS.md \
|
||||||
KNOWN_BUGS \
|
KNOWN_BUGS.md \
|
||||||
KNOWN_RISKS.md \
|
KNOWN_RISKS.md \
|
||||||
MAIL-ETIQUETTE.md \
|
MAIL-ETIQUETTE.md \
|
||||||
MANUAL.md \
|
MANUAL.md \
|
||||||
@@ -121,7 +121,8 @@ EXTRA_DIST = \
|
|||||||
SPONSORS.md \
|
SPONSORS.md \
|
||||||
SSL-PROBLEMS.md \
|
SSL-PROBLEMS.md \
|
||||||
SSLCERTS.md \
|
SSLCERTS.md \
|
||||||
THANKS TODO \
|
THANKS \
|
||||||
|
TODO.md \
|
||||||
TheArtOfHttpScripting.md \
|
TheArtOfHttpScripting.md \
|
||||||
URL-SYNTAX.md \
|
URL-SYNTAX.md \
|
||||||
VERSIONS.md \
|
VERSIONS.md \
|
||||||
|
|||||||
1111
docs/TODO.md
Normal file
1111
docs/TODO.md
Normal file
File diff suppressed because it is too large
Load Diff
@@ -67,7 +67,7 @@ fi
|
|||||||
# Copy some documentation files if needed.
|
# Copy some documentation files if needed.
|
||||||
|
|
||||||
for TEXT in "${TOPDIR}/COPYING" "${SCRIPTDIR}/README.OS400" \
|
for TEXT in "${TOPDIR}/COPYING" "${SCRIPTDIR}/README.OS400" \
|
||||||
"${TOPDIR}/CHANGES.md" "${TOPDIR}/docs/THANKS" "${TOPDIR}/docs/FAQ" \
|
"${TOPDIR}/CHANGES.md" "${TOPDIR}/docs/THANKS" "${TOPDIR}/docs/FAQ.md" \
|
||||||
"${TOPDIR}/docs/FEATURES" "${TOPDIR}/docs/SSLCERTS.md" \
|
"${TOPDIR}/docs/FEATURES" "${TOPDIR}/docs/SSLCERTS.md" \
|
||||||
"${TOPDIR}/docs/RESOURCES" "${TOPDIR}/docs/VERSIONS.md" \
|
"${TOPDIR}/docs/RESOURCES" "${TOPDIR}/docs/VERSIONS.md" \
|
||||||
"${TOPDIR}/docs/HISTORY.md"
|
"${TOPDIR}/docs/HISTORY.md"
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ my %url;
|
|||||||
my %flink;
|
my %flink;
|
||||||
|
|
||||||
# list all .md files in the repo
|
# list all .md files in the repo
|
||||||
my @files=`git ls-files '**.md' docs/TODO docs/KNOWN_BUGS docs/FAQ`;
|
my @files=`git ls-files '**.md'`;
|
||||||
|
|
||||||
sub storelink {
|
sub storelink {
|
||||||
my ($f, $line, $link) = @_;
|
my ($f, $line, $link) = @_;
|
||||||
|
|||||||
Reference in New Issue
Block a user