xref: /curl/docs/KNOWN_BUGS (revision b4e16256)
1                                  _   _ ____  _
2                              ___| | | |  _ \| |
3                             / __| | | | |_) | |
4                            | (__| |_| |  _ <| |___
5                             \___|\___/|_| \_\_____|
6
7                                  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
15
16 2. TLS
17 2.1 IMAPS connection fails with Rustls error
18 2.3 Unable to use PKCS12 certificate with Secure Transport
19 2.4 Secure Transport does not import PKCS#12 client certificates without a password
20 2.5 Client cert handling with Issuer DN differs between backends
21 2.7 Client cert (MTLS) issues with Schannel
22 2.11 Schannel TLS 1.2 handshake bug in old Windows versions
23 2.13 CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel
24
25 3. Email protocols
26 3.1 IMAP SEARCH ALL truncated response
27 3.2 No disconnect command
28 3.4 AUTH PLAIN for SMTP is not working on all servers
29 3.5 APOP authentication fails on POP3
30 3.6 POP3 issue when reading small chunks
31
32 4. Command line
33 4.1 -T /dev/stdin may upload with an incorrect content length
34 4.2 -T - always uploads chunked
35
36 5. Build and portability issues
37 5.1 OS400 port requires deprecated IBM library
38 5.2 curl-config --libs contains private details
39 5.3 LDFLAGS passed too late making libs linked incorrectly
40 5.6 Cygwin: make install installs curl-config.1 twice
41 5.11 configure --with-gssapi with Heimdal is ignored on macOS
42 5.12 flaky CI builds
43 5.13 long paths are not fully supported on Windows
44 5.15 Unicode on Windows
45
46 6. Authentication
47 6.2 MIT Kerberos for Windows build
48 6.3 NTLM in system context uses wrong name
49 6.5 NTLM does not support password with § character
50 6.6 libcurl can fail to try alternatives with --proxy-any
51 6.7 Do not clear digest for single realm
52 6.8 Heimdal memory leaks
53 6.9 SHA-256 digest not supported in Windows SSPI builds
54 6.10 curl never completes Negotiate over HTTP
55 6.11 Negotiate on Windows fails
56 6.12 cannot use Secure Transport with Crypto Token Kit
57 6.13 Negotiate against Hadoop HDFS
58
59 7. FTP
60 7.4 FTP with ACCT
61 7.12 FTPS directory listing hangs on Windows with Schannel
62
63 9. SFTP and SCP
64 9.1 SFTP does not do CURLOPT_POSTQUOTE correct
65 9.2 wolfssh: publickey auth does not work
66 9.3 Remote recursive folder creation with SFTP
67 9.4 libssh blocking and infinite loop problem
68 9.5 Cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!"
69
70 10. SOCKS
71
72 11. Internals
73 11.1 gssapi library name + version is missing in curl_version_info()
74 11.2 error buffer not set if connection to multiple addresses fails
75 11.3 TFTP tests fail on OpenBSD
76 11.4 HTTP test server 'connection-monitor' problems
77 11.5 Connection information when using TCP Fast Open
78 11.6 test cases sometimes timeout
79 11.7 CURLOPT_CONNECT_TO does not work for HTTPS proxy
80 11.8 WinIDN test failures
81
82 12. LDAP
83 12.1 OpenLDAP hangs after returning results
84 12.2 LDAP on Windows does authentication wrong?
85 12.3 LDAP on Windows does not work
86 12.4 LDAPS requests to ActiveDirectory server hang
87
88 13. TCP/IP
89 13.2 Trying local ports fails on Windows
90
91 15. CMake
92 15.1 cmake outputs: no version information available
93 15.2 support build with GnuTLS
94 15.3 unusable tool_hugehelp.c with MinGW
95 15.6 uses -lpthread instead of Threads::Threads
96 15.7 generated .pc file contains strange entries
97 15.13 CMake build with MIT Kerberos does not work
98
99 16. aws-sigv4
100 16.2 aws-sigv4 does not handle multipart/form-data correctly
101 16.3 aws-sigv4 has problems with particular URLs
102 16.6 aws-sigv4 does not behave well with AWS VPC Lattice
103
104 17. HTTP/2
105 17.1 HTTP/2 prior knowledge over proxy
106 17.2 HTTP/2 frames while in the connection pool kill reuse
107 17.3 ENHANCE_YOUR_CALM causes infinite retries
108 17.4 HTTP/2 + TLS spends a lot of time in recv
109
110 18. HTTP/3
111 18.1 connection migration does not work
112 18.2 quiche: QUIC connection is draining
113
114 19. RTSP
115 19.1 Some methods do not support response bodies
116
117==============================================================================
118
1191. HTTP
120
1212. TLS
122
1232.1 IMAPS connection fails with Rustls error
124
125 https://github.com/curl/curl/issues/10457
126
1272.3 Unable to use PKCS12 certificate with Secure Transport
128
129 See https://github.com/curl/curl/issues/5403
130
1312.4 Secure Transport does not import PKCS#12 client certificates without a password
132
133 libcurl calls SecPKCS12Import with the PKCS#12 client certificate, but that
134 function rejects certificates that do not have a password.
135 https://github.com/curl/curl/issues/1308
136
1372.5 Client cert handling with Issuer DN differs between backends
138
139 When the specified client certificate does not match any of the
140 server-specified DNs, the OpenSSL and GnuTLS backends behave differently.
141 The github discussion may contain a solution.
142
143 See https://github.com/curl/curl/issues/1411
144
1452.7 Client cert (MTLS) issues with Schannel
146
147 See https://github.com/curl/curl/issues/3145
148
1492.11 Schannel TLS 1.2 handshake bug in old Windows versions
150
151 In old versions of Windows such as 7 and 8.1 the Schannel TLS 1.2 handshake
152 implementation likely has a bug that can rarely cause the key exchange to
153 fail, resulting in error SEC_E_BUFFER_TOO_SMALL or SEC_E_MESSAGE_ALTERED.
154
155 https://github.com/curl/curl/issues/5488
156
1572.13 CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel
158
159 https://github.com/curl/curl/issues/8741
160
1613. Email protocols
162
1633.1 IMAP SEARCH ALL truncated response
164
165 IMAP "SEARCH ALL" truncates output on large boxes. "A quick search of the
166 code reveals that pingpong.c contains some truncation code, at line 408, when
167 it deems the server response to be too large truncating it to 40 characters"
168 https://curl.se/bug/view.cgi?id=1366
169
1703.2 No disconnect command
171
172 The disconnect commands (LOGOUT and QUIT) may not be sent by IMAP, POP3 and
173 SMTP if a failure occurs during the authentication phase of a connection.
174
1753.4 AUTH PLAIN for SMTP is not working on all servers
176
177 Specifying "--login-options AUTH=PLAIN" on the command line does not seem to
178 work correctly.
179
180 See https://github.com/curl/curl/issues/4080
181
1823.5 APOP authentication fails on POP3
183
184 See https://github.com/curl/curl/issues/10073
185
1863.6 POP3 issue when reading small chunks
187
188 CURL_DBG_SOCK_RMAX=4 ./runtests.pl -v 982
189
190 See https://github.com/curl/curl/issues/12063
191
1924. Command line
193
1944.1 -T /dev/stdin may upload with an incorrect content length
195
196 -T stats the path to figure out its size in bytes to use it as Content-Length
197 if it is a regular file.
198
199 The problem with that is that, on BSDs and some other UNIXes (not Linux),
200 open(path) may not give you a file descriptor with a 0 offset from the start
201 of the file.
202
203 See https://github.com/curl/curl/issues/12177
204
2054.2 -T - always uploads chunked
206
207 When the `<` shell operator is used. curl should realise that stdin is a
208 regular file in this case, and that it can do a non-chunked upload, like it
209 would do if you used -T file.
210
211 See https://github.com/curl/curl/issues/12171
212
2135. Build and portability issues
214
2155.1 OS400 port requires deprecated IBM library
216
217 curl for OS400 requires QADRT to build, which provides ASCII wrappers for
218 libc/POSIX functions in the ILE, but IBM no longer supports or even offers
219 this library to download.
220
221 See https://github.com/curl/curl/issues/5176
222
2235.2 curl-config --libs contains private details
224
225 "curl-config --libs" include details set in LDFLAGS when configure is run
226 that might be needed only for building libcurl. Further, curl-config --cflags
227 suffers from the same effects with CFLAGS/CPPFLAGS.
228
2295.3 LDFLAGS passed too late making libs linked incorrectly
230
231 Compiling latest curl on HP-UX and linking against a custom OpenSSL (which is
232 on the default loader/linker path), fails because the generated Makefile has
233 LDFLAGS passed on after LIBS.
234
235 See https://github.com/curl/curl/issues/14893
236
2375.6 Cygwin: make install installs curl-config.1 twice
238
239 https://github.com/curl/curl/issues/8839
240
2415.11 configure --with-gssapi with Heimdal is ignored on macOS
242
243 ... unless you also pass --with-gssapi-libs
244
245 https://github.com/curl/curl/issues/3841
246
2475.12 flaky CI builds
248
249 We run many CI builds for each commit and PR on github, and especially a
250 number of the Windows builds are flaky. This means that we rarely get all CI
251 builds go green and complete without errors. This is unfortunate as it makes
252 us sometimes miss actual build problems and it is surprising to newcomers to
253 the project who (rightfully) do not expect this.
254
255 See https://github.com/curl/curl/issues/6972
256
2575.13 long paths are not fully supported on Windows
258
259 curl on Windows cannot access long paths (paths longer than 260 characters).
260 However, as a workaround, the Windows path prefix \\?\ which disables all
261 path interpretation may work to allow curl to access the path. For example:
262 \\?\c:\longpath.
263
264 See https://github.com/curl/curl/issues/8361
265
2665.15 Unicode on Windows
267
268 Passing in a Unicode filename with -o:
269
270 https://github.com/curl/curl/issues/11461
271
272 Passing in Unicode character with -d:
273
274 https://github.com/curl/curl/issues/12231
275
276 Windows Unicode builds use homedir in current locale
277
278 The Windows Unicode builds of curl use the current locale, but expect Unicode
279 UTF-8 encoded paths for internal use such as open, access and stat. The
280 user's home directory is retrieved via curl_getenv in the current locale and
281 not as UTF-8 encoded Unicode.
282
283 See https://github.com/curl/curl/pull/7252 and
284     https://github.com/curl/curl/pull/7281
285
286 Cannot handle Unicode arguments in non-Unicode builds on Windows
287
288 If a URL or filename cannot be encoded using the user's current codepage then
289 it can only be encoded properly in the Unicode character set. Windows uses
290 UTF-16 encoding for Unicode and stores it in wide characters, however curl
291 and libcurl are not equipped for that at the moment except when built with
292 _UNICODE and UNICODE defined. Except for Cygwin, Windows cannot use UTF-8 as
293 a locale.
294
295  https://curl.se/bug/?i=345
296  https://curl.se/bug/?i=731
297  https://curl.se/bug/?i=3747
298
299 NTLM authentication and Unicode
300
301 NTLM authentication involving Unicode username or password only works
302 properly if built with UNICODE defined together with the Schannel backend.
303 The original problem was mentioned in:
304 https://curl.se/mail/lib-2009-10/0024.html
305 https://curl.se/bug/view.cgi?id=896
306
307 The Schannel version verified to work as mentioned in
308 https://curl.se/mail/lib-2012-07/0073.html
309
3106. Authentication
311
3126.2 MIT Kerberos for Windows build
313
314 libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's
315 library header files exporting symbols/macros that should be kept private to
316 the KfW library. See ticket #5601 at https://krbdev.mit.edu/rt/
317
3186.3 NTLM in system context uses wrong name
319
320 NTLM authentication using SSPI (on Windows) when (lib)curl is running in
321 "system context" makes it use wrong(?) username - at least when compared to
322 what winhttp does. See https://curl.se/bug/view.cgi?id=535
323
3246.5 NTLM does not support password with § character
325
326 https://github.com/curl/curl/issues/2120
327
3286.6 libcurl can fail to try alternatives with --proxy-any
329
330 When connecting via a proxy using --proxy-any, a failure to establish an
331 authentication causes libcurl to abort trying other options if the failed
332 method has a higher preference than the alternatives. As an example,
333 --proxy-any against a proxy which advertise Negotiate and NTLM, but which
334 fails to set up Kerberos authentication does not proceed to try
335 authentication using NTLM.
336
337 https://github.com/curl/curl/issues/876
338
3396.7 Do not clear digest for single realm
340
341 https://github.com/curl/curl/issues/3267
342
3436.8 Heimdal memory leaks
344
345 Running test 2077 and 2078 with curl built to do GSS with Heimdal causes
346 valgrind errors (memory leak).
347
348 https://github.com/curl/curl/issues/14446
349
3506.9 SHA-256 digest not supported in Windows SSPI builds
351
352 Windows builds of curl that have SSPI enabled use the native Windows API calls
353 to create authentication strings. The call to InitializeSecurityContext fails
354 with SEC_E_QOP_NOT_SUPPORTED which causes curl to fail with CURLE_AUTH_ERROR.
355
356 Microsoft does not document supported digest algorithms and that SEC_E error
357 code is not a documented error for InitializeSecurityContext (digest).
358
359 https://github.com/curl/curl/issues/6302
360
3616.10 curl never completes Negotiate over HTTP
362
363 Apparently it is not working correctly...?
364
365 See https://github.com/curl/curl/issues/5235
366
3676.11 Negotiate on Windows fails
368
369 When using --negotiate (or NTLM) with curl on Windows, SSL/TLS handshake
370 fails despite having a valid kerberos ticket cached. Works without any issue
371 in Unix/Linux.
372
373 https://github.com/curl/curl/issues/5881
374
3756.12 cannot use Secure Transport with Crypto Token Kit
376
377 https://github.com/curl/curl/issues/7048
378
3796.13 Negotiate authentication against Hadoop HDFS
380
381 https://github.com/curl/curl/issues/8264
382
3837. FTP
384
3857.4 FTP with ACCT
386
387 When doing an operation over FTP that requires the ACCT command (but not when
388 logging in), the operation fails since libcurl does not detect this and thus
389 fails to issue the correct command: https://curl.se/bug/view.cgi?id=635
390
3917.12 FTPS server compatibility on Windows with Schannel
392
393 FTPS is not widely used with the Schannel TLS backend and so there may be
394 more bugs compared to other TLS backends such as OpenSSL. In the past users
395 have reported hanging and failed connections. It is likely some changes to
396 curl since then fixed the issues. None of the reported issues can be
397 reproduced any longer.
398
399 If you encounter an issue connecting to your server via FTPS with the latest
400 curl and Schannel then please search for open issues or file a new issue.
401
4029. SFTP and SCP
403
4049.1 SFTP does not do CURLOPT_POSTQUOTE correct
405
406 When libcurl sends CURLOPT_POSTQUOTE commands when connected to a SFTP server
407 using the multi interface, the commands are not being sent correctly and
408 instead the connection is "cancelled" (the operation is considered done)
409 prematurely. There is a half-baked (busy-looping) patch provided in the bug
410 report but it cannot be accepted as-is. See
411 https://curl.se/bug/view.cgi?id=748
412
4139.2 wolfssh: publickey auth does not work
414
415 When building curl to use the wolfSSH backend for SFTP, the publickey
416 authentication does not work. This is simply functionality not written for curl
417 yet, the necessary API for make this work is provided by wolfSSH.
418
419 See https://github.com/curl/curl/issues/4820
420
4219.3 Remote recursive folder creation with SFTP
422
423 On this servers, the curl fails to create directories on the remote server
424 even when the CURLOPT_FTP_CREATE_MISSING_DIRS option is set.
425
426 See https://github.com/curl/curl/issues/5204
427
4289.4 libssh blocking and infinite loop problem
429
430 In the SSH_SFTP_INIT state for libssh, the ssh session working mode is set to
431 blocking mode. If the network is suddenly disconnected during sftp
432 transmission, curl is stuck, even if curl is configured with a timeout.
433
434 https://github.com/curl/curl/issues/8632
435
4369.5 Cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!"
437
438 Running SCP and SFTP tests on Cygwin makes this warning message appear.
439
440 https://github.com/curl/curl/issues/11244
441
44210. SOCKS
443
44411. Internals
445
44611.1 gssapi library name + version is missing in curl_version_info()
447
448 The struct needs to be expanded and code added to store this info.
449
450 See https://github.com/curl/curl/issues/13492
451
45211.2 error buffer not set if connection to multiple addresses fails
453
454 If you ask libcurl to resolve a hostname like example.com to IPv6 addresses
455 when you only have IPv4 connectivity. libcurl fails with
456 CURLE_COULDNT_CONNECT, but the error buffer set by CURLOPT_ERRORBUFFER
457 remains empty. Issue: https://github.com/curl/curl/issues/544
458
45911.3 TFTP tests fail on OpenBSD
460
461 When adding an OpenBSD job with tests to GHA, some tests consistently fail
462 to run.
463
464 See https://github.com/curl/curl/issues/13623
465
46611.4 HTTP test server 'connection-monitor' problems
467
468 The 'connection-monitor' feature of the sws HTTP test server does not work
469 properly if some tests are run in unexpected order. Like 1509 and then 1525.
470
471 See https://github.com/curl/curl/issues/868
472
47311.5 Connection information when using TCP Fast Open
474
475 CURLINFO_LOCAL_PORT (and possibly a few other) fails when TCP Fast Open is
476 enabled.
477
478 See https://github.com/curl/curl/issues/1332 and
479 https://github.com/curl/curl/issues/4296
480
48111.6 test cases sometimes timeout
482
483 Occasionally, one of the tests timeouts. Inexplicably.
484
485 See https://github.com/curl/curl/issues/13350
486
48711.7 CURLOPT_CONNECT_TO does not work for HTTPS proxy
488
489 It is unclear if the same option should even cover the proxy connection or if
490 if requires a separate option.
491
492 See https://github.com/curl/curl/issues/14481
493
49411.8 WinIDN test failures
495
496 Test 165 disabled when built with WinIDN.
497
49812. LDAP
499
50012.1 OpenLDAP hangs after returning results
501
502 By configuration defaults, OpenLDAP automatically chase referrals on
503 secondary socket descriptors. The OpenLDAP backend is asynchronous and thus
504 should monitor all socket descriptors involved. Currently, these secondary
505 descriptors are not monitored, causing OpenLDAP library to never receive
506 data from them.
507
508 As a temporary workaround, disable referrals chasing by configuration.
509
510 The fix is not easy: proper automatic referrals chasing requires a
511 synchronous bind callback and monitoring an arbitrary number of socket
512 descriptors for a single easy handle (currently limited to 5).
513
514 Generic LDAP is synchronous: OK.
515
516 See https://github.com/curl/curl/issues/622 and
517     https://curl.se/mail/lib-2016-01/0101.html
518
51912.2 LDAP on Windows does authentication wrong?
520
521 https://github.com/curl/curl/issues/3116
522
52312.3 LDAP on Windows does not work
524
525 A simple curl command line getting "ldap://ldap.forumsys.com" returns an
526 error that says "no memory" !
527
528 https://github.com/curl/curl/issues/4261
529
53012.4 LDAPS requests to ActiveDirectory server hang
531
532 https://github.com/curl/curl/issues/9580
533
53413. TCP/IP
535
53613.2 Trying local ports fails on Windows
537
538 This makes '--local-port [range]' to not work since curl cannot properly
539 detect if a port is already in use, so it tries the first port, uses that and
540 then subsequently fails anyway if that was actually in use.
541
542 https://github.com/curl/curl/issues/8112
543
54415. CMake
545
54615.1 cmake outputs: no version information available
547
548 Something in the SONAME generation seems to be wrong in the cmake build.
549
550 https://github.com/curl/curl/issues/11158
551
55215.6 uses -lpthread instead of Threads::Threads
553
554 See https://github.com/curl/curl/issues/6166
555
55615.7 generated .pc file contains strange entries
557
558 The Libs.private field of the generated .pc file contains -lgcc -lgcc_s -lc
559 -lgcc -lgcc_s
560
561 See https://github.com/curl/curl/issues/6167
562
56315.13 CMake build with MIT Kerberos does not work
564
565 Minimum CMake version was bumped in curl 7.71.0 (#5358) Since CMake 3.2
566 try_compile started respecting the CMAKE_EXE_FLAGS. The code dealing with
567 MIT Kerberos detection sets few variables to potentially weird mix of space,
568 and ;-separated flags. It had to blow up at some point. All the CMake checks
569 that involve compilation are doomed from that point, the configured tree
570 cannot be built.
571
572 https://github.com/curl/curl/issues/6904
573
57416. aws-sigv4
575
57616.2 aws-sigv4 does not handle multipart/form-data correctly
577
578 https://github.com/curl/curl/issues/13351
579
58016.3 aws-sigv4 has problems with particular URLs
581
582 https://github.com/curl/curl/issues/13058
583
58416.6 aws-sigv4 does not behave well with AWS VPC Lattice
585
586 https://github.com/curl/curl/issues/11007
587
58817. HTTP/2
589
59017.1 HTTP/2 prior knowledge over proxy
591
592 https://github.com/curl/curl/issues/12641
593
59417.2 HTTP/2 frames while in the connection pool kill reuse
595
596 If the server sends HTTP/2 frames (like for example an HTTP/2 PING frame) to
597 curl while the connection is held in curl's connection pool, the socket is
598 found readable when considered for reuse and that makes curl think it is dead
599 and then it is closed and a new connection gets created instead.
600
601 This is *best* fixed by adding monitoring to connections while they are kept
602 in the pool so that pings can be responded to appropriately.
603
60417.3 ENHANCE_YOUR_CALM causes infinite retries
605
606 Infinite retries with 2 parallel requests on one connection receiving GOAWAY
607 with ENHANCE_YOUR_CALM error code.
608
609 See https://github.com/curl/curl/issues/5119
610
61117.4 HTTP/2 + TLS spends a lot of time in recv
612
613 It has been observered that by making the speed limit less accurate we could
614 improve this performance. (by reverting
615 https://github.com/curl/curl/commit/db5c9f4f9e0779b49624752b135281a0717b277b)
616 Can we find a golden middle ground?
617
618 See https://curl.se/mail/lib-2024-05/0026.html and
619 https://github.com/curl/curl/issues/13416
620
62118. HTTP/3
622
62318.1 connection migration does not work
624
625 https://github.com/curl/curl/issues/7695
626
62718.2 quiche: QUIC connection is draining
628
629 The transfer ends with error "QUIC connection is draining".
630
631 https://github.com/curl/curl/issues/12037
632
63319. RTSP
634
63519.1 Some methods do not support response bodies
636
637 The RTSP implementation is written to assume that a number of RTSP methods
638 always get responses without bodies, even though there seems to be no
639 indication in the RFC that this is always the case.
640
641 https://github.com/curl/curl/issues/12414
642