blob: 4284f23a457ee2850e9a612a2afff059cf55e6bf [file] [log] [blame]
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02001 _ _ ____ _
2 ___| | | | _ \| |
3 / __| | | | |_) | |
4 | (__| |_| | _ <| |___
5 \___|\___/|_| \_\_____|
Daniel Stenberg58cad042002-03-07 08:29:24 +00006
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02007 Known Bugs
8
9These are problems and bugs known to exist at the time of this release. Feel
10free to join in and help us correct one or more of these! Also be sure to
11check the changelog of the current development status, as one or more of these
12problems may have been fixed or changed somewhat since this was written!
13
14 1. HTTP
Daniel Stenberg0a7b7a92020-01-29 07:57:42 +010015 1.2 Multiple methods in a single WWW-Authenticate: header
Daniel Stenbergb207ccb2016-04-06 09:20:18 +020016 1.3 STARTTRANSFER time is wrong for HTTP POSTs
17 1.4 multipart formposts file name encoding
18 1.5 Expect-100 meets 417
19 1.6 Unnecessary close when 401 received waiting for 100
Daniel Stenberg917b1bb2019-02-14 10:46:18 +010020 1.7 Deflate error after all content was received
Daniel Stenberg12d655d2019-05-09 10:58:04 +020021 1.8 DoH isn't used for all name resolves when enabled
Daniel Stenberg582d4232016-04-10 23:52:40 +020022 1.9 HTTP/2 frames while in the connection pool kill reuse
Daniel Stenberg710f0572016-09-15 14:19:09 +020023 1.11 CURLOPT_SEEKFUNCTION not called with CURLFORM_STREAM
Daniel Stenbergb207ccb2016-04-06 09:20:18 +020024
25 2. TLS
Michael Kaufmannbcca8422017-01-28 19:45:52 +010026 2.1 CURLINFO_SSL_VERIFYRESULT has limited support
27 2.2 DER in keychain
Daniel Stenberg23558572020-09-23 08:50:52 +020028 2.3 Unable to use PKCS12 certificate with Secure Transport
Daniel Gustafssonf0a6ea22020-07-16 10:11:10 +020029 2.4 Secure Transport won't import PKCS#12 client certificates without a password
Daniel Stenbergf022c912018-04-30 10:26:26 +020030 2.5 Client cert handling with Issuer DN differs between backends
Daniel Stenberg8a6a01c2018-05-31 17:41:42 +020031 2.6 CURL_GLOBAL_SSL
Daniel Stenberg5114f822019-03-07 13:14:51 +010032 2.7 Client cert (MTLS) issues with Schannel
Daniel Stenberg53cc6c72019-06-24 23:23:13 +020033 2.8 Schannel disable CURLOPT_SSL_VERIFYPEER and verify hostname
Daniel Stenberg3ab45a92019-12-16 16:20:16 +010034 2.9 TLS session cache doesn't work with TFO
Daniel Stenberg0c511b42020-04-04 00:01:35 +020035 2.10 Store TLS context per transfer instead of per connection
Jay Satiro6332f652020-08-18 03:24:38 -040036 2.11 Schannel TLS 1.2 handshake bug in old Windows versions
Daniel Stenberg0673cb42020-11-04 23:56:12 +010037 2.12 FTPS with Schannel times out file list operation
Daniel Stenbergb207ccb2016-04-06 09:20:18 +020038
39 3. Email protocols
40 3.1 IMAP SEARCH ALL truncated response
41 3.2 No disconnect command
Pavel Volgarev4a4609b2020-01-14 17:22:38 -050042 3.3 POP3 expects "CRLF.CRLF" eob for some single-line responses
43 3.4 AUTH PLAIN for SMTP is not working on all servers
Daniel Stenbergb207ccb2016-04-06 09:20:18 +020044
45 4. Command line
Daniel Stenberg6b35e4c2018-05-21 23:43:36 +020046 4.1 -J and -O with %-encoded file names
Daniel Stenbergb207ccb2016-04-06 09:20:18 +020047 4.2 -J with -C - fails
48 4.3 --retry and transfer timeouts
Emil Engler8cf8b292020-05-02 08:38:17 +020049 4.4 Improve --data-urlencode space encoding
Daniel Stenbergb207ccb2016-04-06 09:20:18 +020050
51 5. Build and portability issues
Daniel Stenberg938228d2020-05-15 16:58:45 +020052 5.1 OS400 port requires deprecated IBM library
Daniel Stenbergb207ccb2016-04-06 09:20:18 +020053 5.2 curl-config --libs contains private details
Daniel Stenberge6ac3ba2019-02-14 10:49:22 +010054 5.3 curl compiled on OSX 10.13 failed to run on OSX 10.10
Viktor Szakats308c2432020-05-25 19:44:04 +000055 5.4 Build with statically built dependency
Marcel Raadaa6cf7f2020-01-02 23:07:34 +010056 5.5 can't handle Unicode arguments in non-Unicode builds on Windows
Daniel Stenberg141e23d2020-10-21 08:25:19 +020057 5.6 cmake: use correct SONAME for shared library
Steve Holme7c6c2192016-08-31 11:33:22 +010058 5.7 Visual Studio project gaps
Daniel Stenbergbd742ad2016-09-26 11:44:00 +020059 5.8 configure finding libs in wrong directory
Daniel Stenberg96e3c072016-10-16 12:54:59 +020060 5.9 Utilize Requires.private directives in libcurl.pc
Daniel Stenbergce980c22020-11-04 23:48:56 +010061 5.10 SMB tests fail with Python 2
Daniel Stenbergbeea6f82020-03-05 14:27:14 +010062 5.11 configure --with-gssapi with Heimdal is ignored on macOS
Daniel Stenberg141e23d2020-10-21 08:25:19 +020063 5.12 cmake: support build with GnuTLS
64 5.13 cmake: unusable tool_hugehelp.c with MinGW
65 5.14 cmake: build docs/curl.1
Daniel Stenbergb207ccb2016-04-06 09:20:18 +020066
67 6. Authentication
68 6.1 NTLM authentication and unicode
69 6.2 MIT Kerberos for Windows build
70 6.3 NTLM in system context uses wrong name
Steve Holme088ffcb2016-08-31 11:22:12 +010071 6.4 Negotiate and Kerberos V5 need a fake user name
Daniel Gustafsson238494f2018-10-08 22:59:37 +020072 6.5 NTLM doesn't support password with ยง character
Daniel Gustafsson10c91b62018-11-09 16:50:39 +010073 6.6 libcurl can fail to try alternatives with --proxy-any
Daniel Stenberg1853c882019-06-24 23:26:59 +020074 6.7 Don't clear digest for single realm
Daniel Stenbergc048dd02020-06-04 10:40:32 +020075 6.8 RTSP authentication breaks without redirect support
Daniel Stenbergb207ccb2016-04-06 09:20:18 +020076
77 7. FTP
78 7.1 FTP without or slow 220 response
79 7.2 FTP with CONNECT and slow server
80 7.3 FTP with NOBODY and FAILONERROR
81 7.4 FTP with ACCT
82 7.5 ASCII FTP
83 7.6 FTP with NULs in URL parts
84 7.7 FTP and empty path parts in the URL
Daniel Stenberg3533def2016-08-11 14:00:23 +020085 7.8 Premature transfer end but healthy control channel
Daniel Stenberg72be6ab2018-04-30 10:22:17 +020086 7.9 Passive transfer tries only one IP address
Daniel Stenberg6be28042020-03-28 23:04:14 +010087 7.10 FTPS needs session reuse
Daniel Stenbergb207ccb2016-04-06 09:20:18 +020088
89 8. TELNET
Daniel Gustafsson238494f2018-10-08 22:59:37 +020090 8.1 TELNET and time limitations don't work
Daniel Stenbergb207ccb2016-04-06 09:20:18 +020091 8.2 Microsoft telnet server
92
93 9. SFTP and SCP
94 9.1 SFTP doesn't do CURLOPT_POSTQUOTE correct
Daniel Stenberga384e872020-05-15 17:01:32 +020095 9.2 wolfssh: publickey auth doesn't work
Daniel Stenbergb207ccb2016-04-06 09:20:18 +020096
97 10. SOCKS
Daniel Stenbergb207ccb2016-04-06 09:20:18 +020098 10.3 FTPS over SOCKS
99 10.4 active FTP over a SOCKS
100
Daniel Stenbergca6f0a52016-04-08 13:21:52 +0200101 11. Internals
102 11.1 Curl leaks .onion hostnames in DNS
Daniel Stenberg645ed112016-04-08 13:23:28 +0200103 11.2 error buffer not set if connection to multiple addresses fails
Daniel Stenbergc443a8c2016-10-27 23:45:58 +0200104 11.3 c-ares deviates from stock resolver on http://1346569778
Daniel Stenbergffb2bc32017-08-18 16:04:55 +0200105 11.4 HTTP test server 'connection-monitor' problems
Daniel Stenberg822ef4c2018-04-30 10:17:10 +0200106 11.5 Connection information when using TCP Fast Open
Daniel Stenberg6bc83042018-06-14 13:55:45 +0200107 11.6 slow connect to localhost on Windows
Daniel Stenberg0f37c8d2019-09-05 14:21:59 +0200108 11.7 signal-based resolver timeouts
Daniel Stenberg34696ab2020-03-28 23:06:39 +0100109 11.8 DoH leaks memory after followlocation
Daniel Stenberg96a617b2020-03-28 23:09:45 +0100110 11.9 DoH doesn't inherit all transfer options
Jay Satiro42e18522020-04-11 16:05:18 -0400111 11.10 Blocking socket operations in non-blocking API
Daniel Stenbergcb8cf9d2020-08-11 15:43:42 +0200112 11.11 A shared connection cache is not thread-safe
Daniel Gustafssonafbf7d22020-11-05 09:36:24 +0100113 11.12 'no_proxy' string-matches IPv6 numerical addresses
Daniel Stenbergca6f0a52016-04-08 13:21:52 +0200114
Patrick Monnerat3954d6f2016-04-08 16:49:49 +0200115 12. LDAP and OpenLDAP
116 12.1 OpenLDAP hangs after returning results
Daniel Stenberge80b5c82019-10-12 22:45:13 +0200117 12.2 LDAP on Windows does authentication wrong?
Daniel Stenberg73ca9462019-12-16 16:15:39 +0100118 12.3 LDAP on Windows doesn't work
Daniel Stenberg5cb475d2020-11-04 23:43:43 +0100119 12.4 LDAPS with NSS is slow
Patrick Monnerat3954d6f2016-04-08 16:49:49 +0200120
Daniel Stenberg4ddc7722016-10-16 11:53:54 +0200121 13. TCP/IP
Daniel Stenberg27a63932016-04-25 11:20:23 +0200122 13.1 --interface for ipv6 binds to unusable IP address
123
Daniel Stenbergd7670902018-01-28 14:38:38 +0100124 14 DICT
125 14.1 DICT responses show the underlying protocol
Daniel Stenberg27a63932016-04-25 11:20:23 +0200126
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200127==============================================================================
128
1291. HTTP
130
Daniel Stenberg0a7b7a92020-01-29 07:57:42 +01001311.2 Multiple methods in a single WWW-Authenticate: header
132
133 The HTTP responses headers WWW-Authenticate: can provide information about
134 multiple authentication methods as multiple headers or as several methods
135 within a single header. The latter way, several methods in the same physical
136 line, is not supported by libcurl's parser. (For no good reason.)
137
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02001381.3 STARTTRANSFER time is wrong for HTTP POSTs
139
140 Wrong STARTTRANSFER timer accounting for POST requests Timer works fine with
141 GET requests, but while using POST the time for CURLINFO_STARTTRANSFER_TIME
142 is wrong. While using POST CURLINFO_STARTTRANSFER_TIME minus
143 CURLINFO_PRETRANSFER_TIME is near to zero every time.
144
145 https://github.com/curl/curl/issues/218
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100146 https://curl.se/bug/view.cgi?id=1213
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200147
1481.4 multipart formposts file name encoding
149
150 When creating multipart formposts. The file name part can be encoded with
151 something beyond ascii but currently libcurl will only pass in the verbatim
152 string the app provides. There are several browsers that already do this
153 encoding. The key seems to be the updated draft to RFC2231:
154 https://tools.ietf.org/html/draft-reschke-rfc2231-in-http-02
155
1561.5 Expect-100 meets 417
157
158 If an upload using Expect: 100-continue receives an HTTP 417 response, it
159 ought to be automatically resent without the Expect:. A workaround is for
160 the client application to redo the transfer after disabling Expect:.
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100161 https://curl.se/mail/archive-2008-02/0043.html
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200162
1631.6 Unnecessary close when 401 received waiting for 100
164
165 libcurl closes the connection if an HTTP 401 reply is received while it is
Pedro Monreal4b6fd292020-02-02 09:49:28 +0100166 waiting for the 100-continue response.
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100167 https://curl.se/mail/lib-2008-08/0462.html
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200168
Daniel Stenberg917b1bb2019-02-14 10:46:18 +01001691.7 Deflate error after all content was received
170
171 There's a situation where we can get an error in a HTTP response that is
172 compressed, when that error is detected after all the actual body contents
Tim Rรผhsen7b758e92019-04-03 17:16:18 +0200173 have been received and delivered to the application. This is tricky, but is
Daniel Stenberg917b1bb2019-02-14 10:46:18 +0100174 ultimately a broken server.
175
176 See https://github.com/curl/curl/issues/2719
177
Daniel Stenberg12d655d2019-05-09 10:58:04 +02001781.8 DoH isn't used for all name resolves when enabled
179
180 Even if DoH is specified to be used, there are some name resolves that are
181 done without it. This should be fixed. When the internal function
182 `Curl_resolver_wait_resolv()` is called, it doesn't use DoH to complete the
183 resolve as it otherwise should.
184
185 See https://github.com/curl/curl/pull/3857 and
186 https://github.com/curl/curl/pull/3850
187
Daniel Stenberg582d4232016-04-10 23:52:40 +02001881.9 HTTP/2 frames while in the connection pool kill reuse
189
190 If the server sends HTTP/2 frames (like for example an HTTP/2 PING frame) to
191 curl while the connection is held in curl's connection pool, the socket will
192 be found readable when considered for reuse and that makes curl think it is
193 dead and then it will be closed and a new connection gets created instead.
194
195 This is *best* fixed by adding monitoring to connections while they are kept
196 in the pool so that pings can be responded to appropriately.
197
Daniel Stenberg710f0572016-09-15 14:19:09 +02001981.11 CURLOPT_SEEKFUNCTION not called with CURLFORM_STREAM
Daniel Stenbergac09c422016-08-03 00:21:42 +0200199
200 I'm using libcurl to POST form data using a FILE* with the CURLFORM_STREAM
201 option of curl_formadd(). I've noticed that if the connection drops at just
202 the right time, the POST is reattempted without the data from the file. It
203 seems like the file stream position isn't getting reset to the beginning of
204 the file. I found the CURLOPT_SEEKFUNCTION option and set that with a
205 function that performs an fseek() on the FILE*. However, setting that didn't
206 seem to fix the issue or even get called. See
207 https://github.com/curl/curl/issues/768
208
209
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02002102. TLS
211
Michael Kaufmannbcca8422017-01-28 19:45:52 +01002122.1 CURLINFO_SSL_VERIFYRESULT has limited support
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200213
Emil Engler42d8d9a2020-04-23 21:36:35 +0200214 CURLINFO_SSL_VERIFYRESULT is only implemented for the OpenSSL, NSS and
215 GnuTLS backends, so relying on this information in a generic app is flaky.
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200216
Michael Kaufmannbcca8422017-01-28 19:45:52 +01002172.2 DER in keychain
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200218
219 Curl doesn't recognize certificates in DER format in keychain, but it works
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100220 with PEM. https://curl.se/bug/view.cgi?id=1065
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200221
Daniel Stenberg23558572020-09-23 08:50:52 +02002222.3 Unable to use PKCS12 certificate with Secure Transport
223
224 See https://github.com/curl/curl/issues/5403
225
Daniel Gustafssonf0a6ea22020-07-16 10:11:10 +02002262.4 Secure Transport won't import PKCS#12 client certificates without a password
Jay Satirof023f252017-03-06 19:13:03 -0500227
228 libcurl calls SecPKCS12Import with the PKCS#12 client certificate, but that
229 function rejects certificates that do not have a password.
230 https://github.com/curl/curl/issues/1308
231
Daniel Stenbergf022c912018-04-30 10:26:26 +02002322.5 Client cert handling with Issuer DN differs between backends
233
234 When the specified client certificate doesn't match any of the
235 server-specified DNs, the OpenSSL and GnuTLS backends behave differently.
236 The github discussion may contain a solution.
237
238 See https://github.com/curl/curl/issues/1411
Daniel Stenberg9f475f72016-05-17 11:13:48 +0200239
Daniel Stenberg8a6a01c2018-05-31 17:41:42 +02002402.6 CURL_GLOBAL_SSL
241
242 Since libcurl 7.57.0, the flag CURL_GLOBAL_SSL is a no-op. The change was
243 merged in https://github.com/curl/curl/commit/d661b0afb571a
244
245 It was removed since it was
246
247 A) never clear for applications on how to deal with init in the light of
248 different SSL backends (the option was added back in the days when life
249 was simpler)
250
251 B) multissl introduced dynamic switching between SSL backends which
252 emphasized (A) even more
253
254 C) libcurl uses some TLS backend functionality even for non-TLS functions (to
255 get "good" random) so applications trying to avoid the init for
256 performance reasons would do wrong anyway
257
258 D) never very carefully documented so all this mostly just happened to work
259 for some users
260
261 However, in spite of the problems with the feature, there were some users who
262 apparently depended on this feature and who now claim libcurl is broken for
263 them. The fix for this situation is not obvious as a downright revert of the
264 patch is totally ruled out due to those reasons above.
265
266 https://github.com/curl/curl/issues/2276
267
Daniel Stenberg5114f822019-03-07 13:14:51 +01002682.7 Client cert (MTLS) issues with Schannel
269
270 See https://github.com/curl/curl/issues/3145
271
Daniel Stenberg53cc6c72019-06-24 23:23:13 +02002722.8 Schannel disable CURLOPT_SSL_VERIFYPEER and verify hostname
273
274 This seems to be a limitation in the underlying Schannel API.
275
276 https://github.com/curl/curl/issues/3284
Daniel Stenberg8a6a01c2018-05-31 17:41:42 +0200277
Daniel Stenberg3ab45a92019-12-16 16:20:16 +01002782.9 TLS session cache doesn't work with TFO
279
280 See https://github.com/curl/curl/issues/4301
281
Daniel Stenberg0c511b42020-04-04 00:01:35 +02002822.10 Store TLS context per transfer instead of per connection
283
284 The GnuTLS `backend->cred` and the OpenSSL `backend->ctx` data and their
285 proxy versions (and possibly other TLS backends), could be better moved to be
286 stored in the Curl_easy handle instead of in per connection so that a single
287 transfer that makes multiple connections can reuse the context and reduce
288 memory consumption.
289
290 https://github.com/curl/curl/issues/5102
291
Jay Satiro6332f652020-08-18 03:24:38 -04002922.11 Schannel TLS 1.2 handshake bug in old Windows versions
293
294 In old versions of Windows such as 7 and 8.1 the Schannel TLS 1.2 handshake
295 implementation likely has a bug that can rarely cause the key exchange to
296 fail, resulting in error SEC_E_BUFFER_TOO_SMALL or SEC_E_MESSAGE_ALTERED.
297
298 https://github.com/curl/curl/issues/5488
299
Daniel Stenberg0673cb42020-11-04 23:56:12 +01003002.12 FTPS with Schannel times out file list operation
301
302 "Instead of the command completing, it just sits there until the timeout
303 expires." - the same command line seems to work with other TLS backends and
304 other operating systems. See https://github.com/curl/curl/issues/5284.
305
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02003063. Email protocols
307
3083.1 IMAP SEARCH ALL truncated response
309
310 IMAP "SEARCH ALL" truncates output on large boxes. "A quick search of the
311 code reveals that pingpong.c contains some truncation code, at line 408, when
312 it deems the server response to be too large truncating it to 40 characters"
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100313 https://curl.se/bug/view.cgi?id=1366
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200314
3153.2 No disconnect command
316
317 The disconnect commands (LOGOUT and QUIT) may not be sent by IMAP, POP3 and
318 SMTP if a failure occurs during the authentication phase of a connection.
319
Pavel Volgarev4a4609b2020-01-14 17:22:38 -05003203.3 POP3 expects "CRLF.CRLF" eob for some single-line responses
Daniel Stenberga69f27a2016-06-28 08:24:16 +0200321
322 You have to tell libcurl not to expect a body, when dealing with one line
323 response commands. Please see the POP3 examples and test cases which show
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100324 this for the NOOP and DELE commands. https://curl.se/bug/?i=740
Daniel Stenberga69f27a2016-06-28 08:24:16 +0200325
Pavel Volgarev4a4609b2020-01-14 17:22:38 -05003263.4 AUTH PLAIN for SMTP is not working on all servers
Daniel Stenberg44666562020-01-09 16:19:34 +0100327
328 Specifying "--login-options AUTH=PLAIN" on the command line doesn't seem to
329 work correctly.
330
331 See https://github.com/curl/curl/issues/4080
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200332
3334. Command line
334
Daniel Stenberg6b35e4c2018-05-21 23:43:36 +02003354.1 -J and -O with %-encoded file names
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200336
337 -J/--remote-header-name doesn't decode %-encoded file names. RFC6266 details
338 how it should be done. The can of worm is basically that we have no charset
339 handling in curl and ascii >=128 is a challenge for us. Not to mention that
340 decoding also means that we need to check for nastiness that is attempted,
341 like "../" sequences and the like. Probably everything to the left of any
342 embedded slashes should be cut off.
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100343 https://curl.se/bug/view.cgi?id=1294
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200344
Daniel Stenberg6b35e4c2018-05-21 23:43:36 +0200345 -O also doesn't decode %-encoded names, and while it has even less
346 information about the charset involved the process is similar to the -J case.
347
348 Note that we won't add decoding to -O without the user asking for it with
349 some other means as well, since -O has always been documented to use the name
350 exactly as specified in the URL.
351
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02003524.2 -J with -C - fails
353
354 When using -J (with -O), automatically resumed downloading together with "-C
355 -" fails. Without -J the same command line works! This happens because the
356 resume logic is worked out before the target file name (and thus its
357 pre-transfer size) has been figured out!
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100358 https://curl.se/bug/view.cgi?id=1169
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200359
3604.3 --retry and transfer timeouts
361
362 If using --retry and the transfer timeouts (possibly due to using -m or
363 -y/-Y) the next attempt doesn't resume the transfer properly from what was
364 downloaded in the previous attempt but will truncate and restart at the
365 original position where it was at before the previous failed attempt. See
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100366 https://curl.se/mail/lib-2008-01/0080.html and Mandriva bug report
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200367 https://qa.mandriva.com/show_bug.cgi?id=22565
368
Emil Engler8cf8b292020-05-02 08:38:17 +02003694.4 Improve --data-urlencode space encoding
Daniel Stenberg411d0c72019-01-10 15:55:37 +0100370
371 ASCII space characters in --data-urlencode are currently encoded as %20
372 rather than +, which RFC 1866 says should be used.
373
374 See https://github.com/curl/curl/issues/3229
375
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02003765. Build and portability issues
377
Daniel Stenberg938228d2020-05-15 16:58:45 +02003785.1 OS400 port requires deprecated IBM library
379
380 curl for OS400 requires QADRT to build, which provides ASCII wrappers for
381 libc/POSIX functions in the ILE, but IBM no longer supports or even offers
382 this library to download.
383
384 See https://github.com/curl/curl/issues/5176
385
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02003865.2 curl-config --libs contains private details
387
388 "curl-config --libs" will include details set in LDFLAGS when configure is
389 run that might be needed only for building libcurl. Further, curl-config
390 --cflags suffers from the same effects with CFLAGS/CPPFLAGS.
391
Daniel Stenberge6ac3ba2019-02-14 10:49:22 +01003925.3 curl compiled on OSX 10.13 failed to run on OSX 10.10
393
394 See https://github.com/curl/curl/issues/2905
395
Viktor Szakats308c2432020-05-25 19:44:04 +00003965.4 Build with statically built dependency
Daniel Stenberga75de9d2019-02-14 15:36:43 +0100397
Daniel Stenberg4b88ac72020-05-11 11:24:33 +0200398 The build scripts in curl (autotools, cmake and others) are primarily done to
399 work with shared/dynamic third party dependencies. When linking with shared
Viktor Szakats308c2432020-05-25 19:44:04 +0000400 libraries, the dependency "chain" is handled automatically by the library
Daniel Stenberg4b88ac72020-05-11 11:24:33 +0200401 loader - on all modern systems.
402
403 If you instead link with a static library, we need to provide all the
404 dependency libraries already at the link command line.
405
406 Figuring out all the dependency libraries for a given library is hard, as it
407 might also involve figuring out the dependencies of the dependencies and they
408 may vary between platforms and even change between versions.
409
410 When using static dependencies, the build scripts will mostly assume that
411 you, the user, will provide all the necessary additional dependency libraries
412 as additional arguments in the build. With configure, by setting LIBS/LDFLAGS
413 on the command line.
414
415 We welcome help to improve curl's ability to link with static libraries, but
416 it is likely a task that we can never fully support.
Daniel Stenberga75de9d2019-02-14 15:36:43 +0100417
Marcel Raadaa6cf7f2020-01-02 23:07:34 +01004185.5 can't handle Unicode arguments in non-Unicode builds on Windows
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200419
420 If a URL or filename can't be encoded using the user's current codepage then
421 it can only be encoded properly in the Unicode character set. Windows uses
422 UTF-16 encoding for Unicode and stores it in wide characters, however curl
Marcel Raadaa6cf7f2020-01-02 23:07:34 +0100423 and libcurl are not equipped for that at the moment except when built with
424 _UNICODE and UNICODE defined. And, except for Cygwin, Windows can't use UTF-8
425 as a locale.
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200426
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100427 https://curl.se/bug/?i=345
428 https://curl.se/bug/?i=731
429 https://curl.se/bug/?i=3747
Jay Satiro9f740d32016-04-06 02:43:13 -0400430
Daniel Stenberg141e23d2020-10-21 08:25:19 +02004315.6 cmake: use correct SONAME for shared library
Daniel Stenbergb73b4232016-08-29 23:01:49 +0200432
Daniel Stenberg141e23d2020-10-21 08:25:19 +0200433 The autotools build sets the SONAME properly according to VERSIONINFO in
434 lib/Makefile.am and so should cmake to make comparable build.
Daniel Stenbergb73b4232016-08-29 23:01:49 +0200435
Daniel Stenberg141e23d2020-10-21 08:25:19 +0200436 See https://github.com/curl/curl/pull/5935
Daniel Stenberg13f09f62019-01-10 16:52:39 +0100437
Steve Holme7c6c2192016-08-31 11:33:22 +01004385.7 Visual Studio project gaps
439
440 The Visual Studio projects lack some features that the autoconf and nmake
441 builds offer, such as the following:
442
443 - support for zlib and nghttp2
444 - use of static runtime libraries
445 - add the test suite components
446
447 In addition to this the following could be implemented:
448
449 - support for other development IDEs
450 - add PATH environment variables for third-party DLLs
Jay Satiroea3366c2016-04-05 18:56:35 -0400451
Daniel Stenbergbd742ad2016-09-26 11:44:00 +02004525.8 configure finding libs in wrong directory
453
454 When the configure script checks for third-party libraries, it adds those
455 directories to the LDFLAGS variable and then tries linking to see if it
456 works. When successful, the found directory is kept in the LDFLAGS variable
Sebastian Mundry9eda44a2016-09-30 20:34:21 +0200457 when the script continues to execute and do more tests and possibly check for
458 more libraries.
Daniel Stenbergbd742ad2016-09-26 11:44:00 +0200459
460 This can make subsequent checks for libraries wrongly detect another
Sebastian Mundry9eda44a2016-09-30 20:34:21 +0200461 installation in a directory that was previously added to LDFLAGS by another
Daniel Stenbergbd742ad2016-09-26 11:44:00 +0200462 library check!
463
Sebastian Mundry9eda44a2016-09-30 20:34:21 +0200464 A possibly better way to do these checks would be to keep the pristine LDFLAGS
Daniel Stenbergbd742ad2016-09-26 11:44:00 +0200465 even after successful checks and instead add those verified paths to a
Sebastian Mundry9eda44a2016-09-30 20:34:21 +0200466 separate variable that only after all library checks have been performed gets
Daniel Stenbergbd742ad2016-09-26 11:44:00 +0200467 appended to LDFLAGS.
468
Daniel Stenberg96e3c072016-10-16 12:54:59 +02004695.9 Utilize Requires.private directives in libcurl.pc
470
471 https://github.com/curl/curl/issues/864
472
Daniel Stenbergce980c22020-11-04 23:48:56 +01004735.10 SMB tests fail with Python 2
474
475 The error message says "TreeConnectAndX not found".
476
477 See https://github.com/curl/curl/issues/5983
478
Daniel Stenbergbeea6f82020-03-05 14:27:14 +01004795.11 configure --with-gssapi with Heimdal is ignored on macOS
480
481 ... unless you also pass --with-gssapi-libs
482
483 https://github.com/curl/curl/issues/3841
484
Daniel Stenberg141e23d2020-10-21 08:25:19 +02004855.12 cmake: support build with GnuTLS
486
4875.13 cmake: unusable tool_hugehelp.c with MinGW
488
489 see https://github.com/curl/curl/issues/3125
490
4915.14 cmake: build docs/curl.1
492
493 The cmake build doesn't create the docs/curl.1 file and therefor must rely on
494 it being there already. This makes the --manual option not work and test
495 cases like 1139 can't function.
496
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02004976. Authentication
Jay Satiro674b57e2016-02-08 17:40:53 -0500498
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02004996.1 NTLM authentication and unicode
Daniel Stenberg5fde69c2015-09-20 13:34:16 +0200500
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200501 NTLM authentication involving unicode user name or password only works
Daniel Stenberg2429f452020-08-07 17:11:52 +0200502 properly if built with UNICODE defined together with the Schannel
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200503 backend. The original problem was mentioned in:
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100504 https://curl.se/mail/lib-2009-10/0024.html
505 https://curl.se/bug/view.cgi?id=896
Daniel Stenbergad48b172015-04-15 02:48:20 +0200506
Daniel Stenberg2429f452020-08-07 17:11:52 +0200507 The Schannel version verified to work as mentioned in
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100508 https://curl.se/mail/lib-2012-07/0073.html
Daniel Stenberg31987c32015-03-29 23:20:15 +0200509
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02005106.2 MIT Kerberos for Windows build
Daniel Stenberg8a8f9a52013-12-15 23:38:37 +0100511
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200512 libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's
513 library header files exporting symbols/macros that should be kept private to
Viktor Szakats13ef6232017-08-08 19:22:34 +0000514 the KfW library. See ticket #5601 at https://krbdev.mit.edu/rt/
Steve Holme7b9365c2013-11-27 22:33:22 +0000515
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02005166.3 NTLM in system context uses wrong name
Daniel Stenbergc9d8c002013-11-05 10:21:30 +0100517
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200518 NTLM authentication using SSPI (on Windows) when (lib)curl is running in
519 "system context" will make it use wrong(?) user name - at least when compared
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100520 to what winhttp does. See https://curl.se/bug/view.cgi?id=535
Daniel Stenberga22c4782013-10-02 15:30:15 +0200521
Steve Holme088ffcb2016-08-31 11:22:12 +01005226.4 Negotiate and Kerberos V5 need a fake user name
Daniel Stenberg9b8df582013-06-11 00:21:16 +0200523
Steve Holme088ffcb2016-08-31 11:22:12 +0100524 In order to get Negotiate (SPNEGO) authentication to work in HTTP or Kerberos
525 V5 in the e-mail protocols, you need to provide a (fake) user name (this
526 concerns both curl and the lib) because the code wrongly only considers
527 authentication if there's a user name provided by setting
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100528 conn->bits.user_passwd in url.c https://curl.se/bug/view.cgi?id=440 How?
529 https://curl.se/mail/lib-2004-08/0182.html A possible solution is to
Steve Holme088ffcb2016-08-31 11:22:12 +0100530 either modify this variable to be set or introduce a variable such as
531 new conn->bits.want_authentication which is set when any of the authentication
532 options are set.
Daniel Stenberg84f79912013-05-21 23:58:52 +0200533
Daniel Gustafsson238494f2018-10-08 22:59:37 +02005346.5 NTLM doesn't support password with ยง character
Daniel Stenberg81758be2018-06-14 14:04:48 +0200535
536 https://github.com/curl/curl/issues/2120
Daniel Stenbergbce8bc22012-07-08 15:37:52 +0200537
Daniel Gustafsson10c91b62018-11-09 16:50:39 +01005386.6 libcurl can fail to try alternatives with --proxy-any
539
540 When connecting via a proxy using --proxy-any, a failure to establish an
541 authentication will cause libcurl to abort trying other options if the
542 failed method has a higher preference than the alternatives. As an example,
543 --proxy-any against a proxy which advertise Negotiate and NTLM, but which
544 fails to set up Kerberos authentication won't proceed to try authentication
545 using NTLM.
546
547 https://github.com/curl/curl/issues/876
548
Daniel Stenberg1853c882019-06-24 23:26:59 +02005496.7 Don't clear digest for single realm
550
551 https://github.com/curl/curl/issues/3267
552
Daniel Stenbergc048dd02020-06-04 10:40:32 +02005536.8 RTSP authentication breaks without redirect support
554
555 RTSP authentication broke in 7.66.0. A work-around is to enable RTSP in
556 CURLOPT_REDIR_PROTOCOLS. Authentication should however not be considered an
557 actual redirect so a "proper" fix needs to be different and not require users
558 to allow redirects to RTSP to work.
559
560 See https://github.com/curl/curl/pull/4750
561
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02005627. FTP
Daniel Stenberg24af69a2012-07-08 15:34:58 +0200563
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02005647.1 FTP without or slow 220 response
Daniel Stenbergf1106042010-02-14 22:51:43 +0000565
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200566 If a connection is made to a FTP server but the server then just never sends
567 the 220 response or otherwise is dead slow, libcurl will not acknowledge the
568 connection timeout during that phase but only the "real" timeout - which may
569 surprise users as it is probably considered to be the connect phase to most
570 people. Brought up (and is being misunderstood) in:
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100571 https://curl.se/bug/view.cgi?id=856
Daniel Stenberg5a99bce2012-07-07 14:38:50 +0200572
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02005737.2 FTP with CONNECT and slow server
Daniel Stenberg2d0aca32009-08-31 21:57:24 +0000574
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200575 When doing FTP over a socks proxy or CONNECT through HTTP proxy and the multi
576 interface is used, libcurl will fail if the (passive) TCP connection for the
577 data transfer isn't more or less instant as the code does not properly wait
578 for the connect to be confirmed. See test case 564 for a first shot at a test
579 case.
Daniel Stenbergbf5f9122009-07-31 11:16:04 +0000580
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02005817.3 FTP with NOBODY and FAILONERROR
Daniel Stenberg650543a2009-07-21 22:30:31 +0000582
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200583 It seems sensible to be able to use CURLOPT_NOBODY and CURLOPT_FAILONERROR
584 with FTP to detect if a file exists or not, but it is not working:
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100585 https://curl.se/mail/lib-2008-07/0295.html
Daniel Stenberg63270b02009-05-11 12:40:48 +0000586
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02005877.4 FTP with ACCT
Daniel Stenbergf278d172009-04-18 22:18:35 +0000588
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200589 When doing an operation over FTP that requires the ACCT command (but not when
590 logging in), the operation will fail since libcurl doesn't detect this and
591 thus fails to issue the correct command:
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100592 https://curl.se/bug/view.cgi?id=635
Dan Fandricha97ab4f2009-01-08 01:09:29 +0000593
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02005947.5 ASCII FTP
Dan Fandricha97ab4f2009-01-08 01:09:29 +0000595
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200596 FTP ASCII transfers do not follow RFC959. They don't convert the data
597 accordingly (not for sending nor for receiving). RFC 959 section 3.1.1.1
598 clearly describes how this should be done:
Daniel Stenbergf29d2232008-08-24 22:08:42 +0000599
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200600 The sender converts the data from an internal character representation to
601 the standard 8-bit NVT-ASCII representation (see the Telnet
602 specification). The receiver will convert the data from the standard
603 form to his own internal form.
Daniel Stenbergb39d4092008-07-29 21:51:47 +0000604
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200605 Since 7.15.4 at least line endings are converted.
Yang Tsec62d5532008-05-27 16:10:51 +0000606
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02006077.6 FTP with NULs in URL parts
Daniel Stenberg6bae0912008-01-28 16:04:52 +0000608
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200609 FTP URLs passed to curl may contain NUL (0x00) in the RFC 1738 <user>,
610 <password>, and <fpath> components, encoded as "%00". The problem is that
611 curl_unescape does not detect this, but instead returns a shortened C string.
612 From a strict FTP protocol standpoint, NUL is a valid character within RFC
613 959 <string>, so the way to handle this correctly in curl would be to use a
614 data structure other than a plain C string, one that can handle embedded NUL
615 characters. From a practical standpoint, most FTP servers would not
616 meaningfully support NUL characters within RFC 959 <string>, anyway (e.g.,
617 Unix pathnames may not contain NUL).
Daniel Stenberg07227e82008-01-08 22:15:19 +0000618
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02006197.7 FTP and empty path parts in the URL
Daniel Stenberg0ff311a2007-09-06 13:38:05 +0000620
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200621 libcurl ignores empty path parts in FTP URLs, whereas RFC1738 states that
622 such parts should be sent to the server as 'CWD ' (without an argument). The
623 only exception to this rule, is that we knowingly break this if the empty
624 part is first in the path, as then we use the double slashes to indicate that
625 the user wants to reach the root dir (this exception SHALL remain even when
626 this bug is fixed).
Daniel Stenberg2ea05232007-06-07 21:56:03 +0000627
Daniel Stenberg3533def2016-08-11 14:00:23 +02006287.8 Premature transfer end but healthy control channel
629
630 When 'multi_done' is called before the transfer has been completed the normal
631 way, it is considered a "premature" transfer end. In this situation, libcurl
632 closes the connection assuming it doesn't know the state of the connection so
633 it can't be reused for subsequent requests.
634
635 With FTP however, this isn't necessarily true but there are a bunch of
636 situations (listed in the ftp_done code) where it *could* keep the connection
637 alive even in this situation - but the current code doesn't. Fixing this would
638 allow libcurl to reuse FTP connections better.
Daniel Stenberg7cbbd1b2007-04-10 20:51:52 +0000639
Daniel Stenberg72be6ab2018-04-30 10:22:17 +02006407.9 Passive transfer tries only one IP address
641
642 When doing FTP operations through a proxy at localhost, the reported spotted
Daniel Gustafsson238494f2018-10-08 22:59:37 +0200643 that curl only tried to connect once to the proxy, while it had multiple
Daniel Stenberg72be6ab2018-04-30 10:22:17 +0200644 addresses and a failed connect on one address should make it try the next.
645
646 After switching to passive mode (EPSV), curl should try all IP addresses for
647 "localhost". Currently it tries ::1, but it should also try 127.0.0.1.
648
649 See https://github.com/curl/curl/issues/1508
650
Daniel Stenberg6be28042020-03-28 23:04:14 +01006517.10 FTPS needs session reuse
652
653 When the control connection is reused for a subsequent transfer, some FTPS
654 servers complain about "missing session reuse" for the data channel for the
655 second transfer.
656
657 https://github.com/curl/curl/issues/4654
658
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02006598. TELNET
Daniel Stenbergfbc44072007-01-27 23:02:17 +0000660
Daniel Gustafsson238494f2018-10-08 22:59:37 +02006618.1 TELNET and time limitations don't work
Daniel Stenbergfbc44072007-01-27 23:02:17 +0000662
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200663 When using telnet, the time limitation options don't work.
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100664 https://curl.se/bug/view.cgi?id=846
Daniel Stenberg466d0932006-09-03 22:52:42 +0000665
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02006668.2 Microsoft telnet server
Daniel Stenberg8ed0d562006-05-14 22:49:23 +0000667
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200668 There seems to be a problem when connecting to the Microsoft telnet server.
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100669 https://curl.se/bug/view.cgi?id=649
Daniel Stenbergc7a63462005-12-22 08:33:02 +0000670
Daniel Stenberg5fbfa1b2005-09-16 07:09:07 +0000671
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02006729. SFTP and SCP
Daniel Stenberg17e8d602007-02-19 11:53:54 +0000673
Daniel Stenbergb207ccb2016-04-06 09:20:18 +02006749.1 SFTP doesn't do CURLOPT_POSTQUOTE correct
Daniel Stenberg15bc2282005-08-17 09:41:54 +0000675
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200676 When libcurl sends CURLOPT_POSTQUOTE commands when connected to a SFTP server
677 using the multi interface, the commands are not being sent correctly and
678 instead the connection is "cancelled" (the operation is considered done)
679 prematurely. There is a half-baked (busy-looping) patch provided in the bug
680 report but it cannot be accepted as-is. See
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100681 https://curl.se/bug/view.cgi?id=748
Daniel Stenberg8f646ee2005-03-17 08:09:10 +0000682
Daniel Stenberga384e872020-05-15 17:01:32 +02006839.2 wolfssh: publickey auth doesn't work
684
685 When building curl to use the wolfSSH backend for SFTP, the publickey
Viktor Szakats308c2432020-05-25 19:44:04 +0000686 authentication doesn't work. This is simply functionality not written for curl
Daniel Stenberga384e872020-05-15 17:01:32 +0200687 yet, the necessary API for make this work is provided by wolfSSH.
688
689 See https://github.com/curl/curl/issues/4820
Daniel Stenberg8f646ee2005-03-17 08:09:10 +0000690
Daniel Stenbergb207ccb2016-04-06 09:20:18 +020069110. SOCKS
Daniel Stenberg95152ae2006-04-26 07:40:37 +0000692
Daniel Stenbergb207ccb2016-04-06 09:20:18 +020069310.3 FTPS over SOCKS
Daniel Stenberg0850aec2003-11-12 14:33:58 +0000694
Daniel Stenbergb207ccb2016-04-06 09:20:18 +0200695 libcurl doesn't support FTPS over a SOCKS proxy.
Daniel Stenberg18b809e2003-10-17 12:21:48 +0000696
Daniel Stenbergb207ccb2016-04-06 09:20:18 +020069710.4 active FTP over a SOCKS
698
699 libcurl doesn't support active FTP over a SOCKS proxy
Daniel Stenbergca6f0a52016-04-08 13:21:52 +0200700
701
70211. Internals
703
70411.1 Curl leaks .onion hostnames in DNS
705
706 Curl sends DNS requests for hostnames with a .onion TLD. This leaks
707 information about what the user is attempting to access, and violates this
708 requirement of RFC7686: https://tools.ietf.org/html/rfc7686
709
710 Issue: https://github.com/curl/curl/issues/543
Daniel Stenberg645ed112016-04-08 13:23:28 +0200711
71211.2 error buffer not set if connection to multiple addresses fails
713
714 If you ask libcurl to resolve a hostname like example.com to IPv6 addresses
715 only. But you only have IPv4 connectivity. libcurl will correctly fail with
716 CURLE_COULDNT_CONNECT. But the error buffer set by CURLOPT_ERRORBUFFER
717 remains empty. Issue: https://github.com/curl/curl/issues/544
Patrick Monnerat3954d6f2016-04-08 16:49:49 +0200718
Daniel Stenbergc443a8c2016-10-27 23:45:58 +020071911.3 c-ares deviates from stock resolver on http://1346569778
720
721 When using the socket resolvers, that URL becomes:
722
723 * Rebuilt URL to: http://1346569778/
724 * Trying 80.67.6.50...
725
726 but with c-ares it instead says "Could not resolve: 1346569778 (Domain name
727 not found)"
728
729 See https://github.com/curl/curl/issues/893
730
Daniel Stenbergffb2bc32017-08-18 16:04:55 +020073111.4 HTTP test server 'connection-monitor' problems
732
733 The 'connection-monitor' feature of the sws HTTP test server doesn't work
734 properly if some tests are run in unexpected order. Like 1509 and then 1525.
735
736 See https://github.com/curl/curl/issues/868
737
Daniel Stenberg822ef4c2018-04-30 10:17:10 +020073811.5 Connection information when using TCP Fast Open
739
740 CURLINFO_LOCAL_PORT (and possibly a few other) fails when TCP Fast Open is
741 enabled.
742
Daniel Stenberg8a9d6ee2019-12-16 16:17:16 +0100743 See https://github.com/curl/curl/issues/1332 and
744 https://github.com/curl/curl/issues/4296
Daniel Stenberg822ef4c2018-04-30 10:17:10 +0200745
Daniel Stenberg6bc83042018-06-14 13:55:45 +020074611.6 slow connect to localhost on Windows
747
748 When connecting to "localhost" on Windows, curl will resolve the name for
749 both ipv4 and ipv6 and try to connect to both happy eyeballs-style. Something
Daniel Gustafsson238494f2018-10-08 22:59:37 +0200750 in there does however make it take 200 milliseconds to succeed - which is the
Daniel Stenberg6bc83042018-06-14 13:55:45 +0200751 HAPPY_EYEBALLS_TIMEOUT define exactly. Lowering that define speeds up the
752 connection, suggesting a problem in the HE handling.
753
754 If we can *know* that we're talking to a local host, we should lower the
755 happy eyeballs delay timeout for IPv6 (related: hardcode the "localhost"
756 addresses, mentioned in TODO). Possibly we should reduce that delay for all.
757
758 https://github.com/curl/curl/issues/2281
Patrick Monnerat3954d6f2016-04-08 16:49:49 +0200759
Daniel Stenberg0f37c8d2019-09-05 14:21:59 +020076011.7 signal-based resolver timeouts
761
762 libcurl built without an asynchronous resolver library uses alarm() to time
763 out DNS lookups. When a timeout occurs, this causes libcurl to jump from the
764 signal handler back into the library with a sigsetjmp, which effectively
765 causes libcurl to continue running within the signal handler. This is
766 non-portable and could cause problems on some platforms. A discussion on the
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100767 problem is available at https://curl.se/mail/lib-2008-09/0197.html
Daniel Stenberg0f37c8d2019-09-05 14:21:59 +0200768
769 Also, alarm() provides timeout resolution only to the nearest second. alarm
770 ought to be replaced by setitimer on systems that support it.
771
Daniel Stenberg34696ab2020-03-28 23:06:39 +010077211.8 DoH leaks memory after followlocation
773
774 https://github.com/curl/curl/issues/4592
Daniel Stenberg0f37c8d2019-09-05 14:21:59 +0200775
Daniel Stenberg96a617b2020-03-28 23:09:45 +010077611.9 DoH doesn't inherit all transfer options
777
778 https://github.com/curl/curl/issues/4578
779
Jay Satiro42e18522020-04-11 16:05:18 -040078011.10 Blocking socket operations in non-blocking API
781
782 The list of blocking socket operations is in TODO section "More non-blocking".
783
Daniel Stenbergcb8cf9d2020-08-11 15:43:42 +020078411.11 A shared connection cache is not thread-safe
785
786 The share interface offers CURL_LOCK_DATA_CONNECT to have multiple easy
787 handle share a connection cache, but due to how connections are used they are
788 still not thread-safe when used shared.
789
Daniel Stenberg8ca54a02020-09-05 20:30:26 +0200790 See https://github.com/curl/curl/issues/4915 and lib1541.c
Daniel Stenbergcb8cf9d2020-08-11 15:43:42 +0200791
Daniel Gustafssonafbf7d22020-11-05 09:36:24 +010079211.12 'no_proxy' string-matches IPv6 numerical addresses
Daniel Stenberg712d16c2020-08-22 23:50:14 +0200793
794 This has the downside that "::1" for example doesn't match "::0:1" even
795 though they are in fact the same address.
796
797 See https://github.com/curl/curl/issues/5745
798
Patrick Monnerat3954d6f2016-04-08 16:49:49 +020079912. LDAP and OpenLDAP
800
80112.1 OpenLDAP hangs after returning results
802
803 By configuration defaults, openldap automatically chase referrals on
804 secondary socket descriptors. The OpenLDAP backend is asynchronous and thus
805 should monitor all socket descriptors involved. Currently, these secondary
806 descriptors are not monitored, causing openldap library to never receive
807 data from them.
808
809 As a temporary workaround, disable referrals chasing by configuration.
810
811 The fix is not easy: proper automatic referrals chasing requires a
812 synchronous bind callback and monitoring an arbitrary number of socket
813 descriptors for a single easy handle (currently limited to 5).
814
815 Generic LDAP is synchronous: OK.
816
817 See https://github.com/curl/curl/issues/622 and
Daniel Stenberg4d2f8002020-11-04 14:02:01 +0100818 https://curl.se/mail/lib-2016-01/0101.html
Daniel Stenberg27a63932016-04-25 11:20:23 +0200819
Daniel Stenberge80b5c82019-10-12 22:45:13 +020082012.2 LDAP on Windows does authentication wrong?
821
822 https://github.com/curl/curl/issues/3116
Daniel Stenberg27a63932016-04-25 11:20:23 +0200823
Daniel Stenberg73ca9462019-12-16 16:15:39 +010082412.3 LDAP on Windows doesn't work
825
826 A simple curl command line getting "ldap://ldap.forumsys.com" returns an
827 error that says "no memory" !
828
829 https://github.com/curl/curl/issues/4261
830
Daniel Stenberg5cb475d2020-11-04 23:43:43 +010083112.4 LDAPS with NSS is slow
832
833 See https://github.com/curl/curl/issues/5874
834
Daniel Stenberg4ddc7722016-10-16 11:53:54 +020083513. TCP/IP
Daniel Stenberg27a63932016-04-25 11:20:23 +0200836
83713.1 --interface for ipv6 binds to unusable IP address
838
839 Since IPv6 provides a lot of addresses with different scope, binding to an
840 IPv6 address needs to take the proper care so that it doesn't bind to a
841 locally scoped address as that is bound to fail.
842
843 https://github.com/curl/curl/issues/686
Daniel Stenbergd7670902018-01-28 14:38:38 +0100844
84514. DICT
846
84714.1 DICT responses show the underlying protocol
848
849 When getting a DICT response, the protocol parts of DICT aren't stripped off
850 from the output.
851
852 https://github.com/curl/curl/issues/1809