| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 1 | _ _ ____ _ |
| 2 | ___| | | | _ \| | |
| 3 | / __| | | | |_) | | |
| 4 | | (__| |_| | _ <| |___ |
| 5 | \___|\___/|_| \_\_____| |
| Daniel Stenberg | 58cad04 | 2002-03-07 08:29:24 +0000 | [diff] [blame] | 6 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 7 | Known Bugs |
| 8 | |
| 9 | These are problems and bugs known to exist at the time of this release. Feel |
| 10 | free to join in and help us correct one or more of these! Also be sure to |
| 11 | check the changelog of the current development status, as one or more of these |
| 12 | problems may have been fixed or changed somewhat since this was written! |
| 13 | |
| 14 | 1. HTTP |
| Daniel Stenberg | 0a7b7a9 | 2020-01-29 07:57:42 +0100 | [diff] [blame] | 15 | 1.2 Multiple methods in a single WWW-Authenticate: header |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 16 | 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 Stenberg | 917b1bb | 2019-02-14 10:46:18 +0100 | [diff] [blame] | 20 | 1.7 Deflate error after all content was received |
| Daniel Stenberg | 12d655d | 2019-05-09 10:58:04 +0200 | [diff] [blame] | 21 | 1.8 DoH isn't used for all name resolves when enabled |
| Daniel Stenberg | 582d423 | 2016-04-10 23:52:40 +0200 | [diff] [blame] | 22 | 1.9 HTTP/2 frames while in the connection pool kill reuse |
| Daniel Stenberg | 710f057 | 2016-09-15 14:19:09 +0200 | [diff] [blame] | 23 | 1.11 CURLOPT_SEEKFUNCTION not called with CURLFORM_STREAM |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 24 | |
| 25 | 2. TLS |
| Michael Kaufmann | bcca842 | 2017-01-28 19:45:52 +0100 | [diff] [blame] | 26 | 2.1 CURLINFO_SSL_VERIFYRESULT has limited support |
| 27 | 2.2 DER in keychain |
| Daniel Stenberg | 2355857 | 2020-09-23 08:50:52 +0200 | [diff] [blame] | 28 | 2.3 Unable to use PKCS12 certificate with Secure Transport |
| Daniel Gustafsson | f0a6ea2 | 2020-07-16 10:11:10 +0200 | [diff] [blame] | 29 | 2.4 Secure Transport won't import PKCS#12 client certificates without a password |
| Daniel Stenberg | f022c91 | 2018-04-30 10:26:26 +0200 | [diff] [blame] | 30 | 2.5 Client cert handling with Issuer DN differs between backends |
| Daniel Stenberg | 8a6a01c | 2018-05-31 17:41:42 +0200 | [diff] [blame] | 31 | 2.6 CURL_GLOBAL_SSL |
| Daniel Stenberg | 5114f82 | 2019-03-07 13:14:51 +0100 | [diff] [blame] | 32 | 2.7 Client cert (MTLS) issues with Schannel |
| Daniel Stenberg | 53cc6c7 | 2019-06-24 23:23:13 +0200 | [diff] [blame] | 33 | 2.8 Schannel disable CURLOPT_SSL_VERIFYPEER and verify hostname |
| Daniel Stenberg | 3ab45a9 | 2019-12-16 16:20:16 +0100 | [diff] [blame] | 34 | 2.9 TLS session cache doesn't work with TFO |
| Daniel Stenberg | 0c511b4 | 2020-04-04 00:01:35 +0200 | [diff] [blame] | 35 | 2.10 Store TLS context per transfer instead of per connection |
| Jay Satiro | 6332f65 | 2020-08-18 03:24:38 -0400 | [diff] [blame] | 36 | 2.11 Schannel TLS 1.2 handshake bug in old Windows versions |
| Daniel Stenberg | 0673cb4 | 2020-11-04 23:56:12 +0100 | [diff] [blame] | 37 | 2.12 FTPS with Schannel times out file list operation |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 38 | |
| 39 | 3. Email protocols |
| 40 | 3.1 IMAP SEARCH ALL truncated response |
| 41 | 3.2 No disconnect command |
| Pavel Volgarev | 4a4609b | 2020-01-14 17:22:38 -0500 | [diff] [blame] | 42 | 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 Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 44 | |
| 45 | 4. Command line |
| Daniel Stenberg | 6b35e4c | 2018-05-21 23:43:36 +0200 | [diff] [blame] | 46 | 4.1 -J and -O with %-encoded file names |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 47 | 4.2 -J with -C - fails |
| 48 | 4.3 --retry and transfer timeouts |
| Emil Engler | 8cf8b29 | 2020-05-02 08:38:17 +0200 | [diff] [blame] | 49 | 4.4 Improve --data-urlencode space encoding |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 50 | |
| 51 | 5. Build and portability issues |
| Daniel Stenberg | 938228d | 2020-05-15 16:58:45 +0200 | [diff] [blame] | 52 | 5.1 OS400 port requires deprecated IBM library |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 53 | 5.2 curl-config --libs contains private details |
| Daniel Stenberg | e6ac3ba | 2019-02-14 10:49:22 +0100 | [diff] [blame] | 54 | 5.3 curl compiled on OSX 10.13 failed to run on OSX 10.10 |
| Viktor Szakats | 308c243 | 2020-05-25 19:44:04 +0000 | [diff] [blame] | 55 | 5.4 Build with statically built dependency |
| Marcel Raad | aa6cf7f | 2020-01-02 23:07:34 +0100 | [diff] [blame] | 56 | 5.5 can't handle Unicode arguments in non-Unicode builds on Windows |
| Daniel Stenberg | 141e23d | 2020-10-21 08:25:19 +0200 | [diff] [blame] | 57 | 5.6 cmake: use correct SONAME for shared library |
| Steve Holme | 7c6c219 | 2016-08-31 11:33:22 +0100 | [diff] [blame] | 58 | 5.7 Visual Studio project gaps |
| Daniel Stenberg | bd742ad | 2016-09-26 11:44:00 +0200 | [diff] [blame] | 59 | 5.8 configure finding libs in wrong directory |
| Daniel Stenberg | 96e3c07 | 2016-10-16 12:54:59 +0200 | [diff] [blame] | 60 | 5.9 Utilize Requires.private directives in libcurl.pc |
| Daniel Stenberg | ce980c2 | 2020-11-04 23:48:56 +0100 | [diff] [blame] | 61 | 5.10 SMB tests fail with Python 2 |
| Daniel Stenberg | beea6f8 | 2020-03-05 14:27:14 +0100 | [diff] [blame] | 62 | 5.11 configure --with-gssapi with Heimdal is ignored on macOS |
| Daniel Stenberg | 141e23d | 2020-10-21 08:25:19 +0200 | [diff] [blame] | 63 | 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 Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 66 | |
| 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 Holme | 088ffcb | 2016-08-31 11:22:12 +0100 | [diff] [blame] | 71 | 6.4 Negotiate and Kerberos V5 need a fake user name |
| Daniel Gustafsson | 238494f | 2018-10-08 22:59:37 +0200 | [diff] [blame] | 72 | 6.5 NTLM doesn't support password with ยง character |
| Daniel Gustafsson | 10c91b6 | 2018-11-09 16:50:39 +0100 | [diff] [blame] | 73 | 6.6 libcurl can fail to try alternatives with --proxy-any |
| Daniel Stenberg | 1853c88 | 2019-06-24 23:26:59 +0200 | [diff] [blame] | 74 | 6.7 Don't clear digest for single realm |
| Daniel Stenberg | c048dd0 | 2020-06-04 10:40:32 +0200 | [diff] [blame] | 75 | 6.8 RTSP authentication breaks without redirect support |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 76 | |
| 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 Stenberg | 3533def | 2016-08-11 14:00:23 +0200 | [diff] [blame] | 85 | 7.8 Premature transfer end but healthy control channel |
| Daniel Stenberg | 72be6ab | 2018-04-30 10:22:17 +0200 | [diff] [blame] | 86 | 7.9 Passive transfer tries only one IP address |
| Daniel Stenberg | 6be2804 | 2020-03-28 23:04:14 +0100 | [diff] [blame] | 87 | 7.10 FTPS needs session reuse |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 88 | |
| 89 | 8. TELNET |
| Daniel Gustafsson | 238494f | 2018-10-08 22:59:37 +0200 | [diff] [blame] | 90 | 8.1 TELNET and time limitations don't work |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 91 | 8.2 Microsoft telnet server |
| 92 | |
| 93 | 9. SFTP and SCP |
| 94 | 9.1 SFTP doesn't do CURLOPT_POSTQUOTE correct |
| Daniel Stenberg | a384e87 | 2020-05-15 17:01:32 +0200 | [diff] [blame] | 95 | 9.2 wolfssh: publickey auth doesn't work |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 96 | |
| 97 | 10. SOCKS |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 98 | 10.3 FTPS over SOCKS |
| 99 | 10.4 active FTP over a SOCKS |
| 100 | |
| Daniel Stenberg | ca6f0a5 | 2016-04-08 13:21:52 +0200 | [diff] [blame] | 101 | 11. Internals |
| 102 | 11.1 Curl leaks .onion hostnames in DNS |
| Daniel Stenberg | 645ed11 | 2016-04-08 13:23:28 +0200 | [diff] [blame] | 103 | 11.2 error buffer not set if connection to multiple addresses fails |
| Daniel Stenberg | c443a8c | 2016-10-27 23:45:58 +0200 | [diff] [blame] | 104 | 11.3 c-ares deviates from stock resolver on http://1346569778 |
| Daniel Stenberg | ffb2bc3 | 2017-08-18 16:04:55 +0200 | [diff] [blame] | 105 | 11.4 HTTP test server 'connection-monitor' problems |
| Daniel Stenberg | 822ef4c | 2018-04-30 10:17:10 +0200 | [diff] [blame] | 106 | 11.5 Connection information when using TCP Fast Open |
| Daniel Stenberg | 6bc8304 | 2018-06-14 13:55:45 +0200 | [diff] [blame] | 107 | 11.6 slow connect to localhost on Windows |
| Daniel Stenberg | 0f37c8d | 2019-09-05 14:21:59 +0200 | [diff] [blame] | 108 | 11.7 signal-based resolver timeouts |
| Daniel Stenberg | 34696ab | 2020-03-28 23:06:39 +0100 | [diff] [blame] | 109 | 11.8 DoH leaks memory after followlocation |
| Daniel Stenberg | 96a617b | 2020-03-28 23:09:45 +0100 | [diff] [blame] | 110 | 11.9 DoH doesn't inherit all transfer options |
| Jay Satiro | 42e1852 | 2020-04-11 16:05:18 -0400 | [diff] [blame] | 111 | 11.10 Blocking socket operations in non-blocking API |
| Daniel Stenberg | cb8cf9d | 2020-08-11 15:43:42 +0200 | [diff] [blame] | 112 | 11.11 A shared connection cache is not thread-safe |
| Daniel Gustafsson | afbf7d2 | 2020-11-05 09:36:24 +0100 | [diff] [blame^] | 113 | 11.12 'no_proxy' string-matches IPv6 numerical addresses |
| Daniel Stenberg | ca6f0a5 | 2016-04-08 13:21:52 +0200 | [diff] [blame] | 114 | |
| Patrick Monnerat | 3954d6f | 2016-04-08 16:49:49 +0200 | [diff] [blame] | 115 | 12. LDAP and OpenLDAP |
| 116 | 12.1 OpenLDAP hangs after returning results |
| Daniel Stenberg | e80b5c8 | 2019-10-12 22:45:13 +0200 | [diff] [blame] | 117 | 12.2 LDAP on Windows does authentication wrong? |
| Daniel Stenberg | 73ca946 | 2019-12-16 16:15:39 +0100 | [diff] [blame] | 118 | 12.3 LDAP on Windows doesn't work |
| Daniel Stenberg | 5cb475d | 2020-11-04 23:43:43 +0100 | [diff] [blame] | 119 | 12.4 LDAPS with NSS is slow |
| Patrick Monnerat | 3954d6f | 2016-04-08 16:49:49 +0200 | [diff] [blame] | 120 | |
| Daniel Stenberg | 4ddc772 | 2016-10-16 11:53:54 +0200 | [diff] [blame] | 121 | 13. TCP/IP |
| Daniel Stenberg | 27a6393 | 2016-04-25 11:20:23 +0200 | [diff] [blame] | 122 | 13.1 --interface for ipv6 binds to unusable IP address |
| 123 | |
| Daniel Stenberg | d767090 | 2018-01-28 14:38:38 +0100 | [diff] [blame] | 124 | 14 DICT |
| 125 | 14.1 DICT responses show the underlying protocol |
| Daniel Stenberg | 27a6393 | 2016-04-25 11:20:23 +0200 | [diff] [blame] | 126 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 127 | ============================================================================== |
| 128 | |
| 129 | 1. HTTP |
| 130 | |
| Daniel Stenberg | 0a7b7a9 | 2020-01-29 07:57:42 +0100 | [diff] [blame] | 131 | 1.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 Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 138 | 1.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 Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 146 | https://curl.se/bug/view.cgi?id=1213 |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 147 | |
| 148 | 1.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 | |
| 156 | 1.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 Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 161 | https://curl.se/mail/archive-2008-02/0043.html |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 162 | |
| 163 | 1.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 Monreal | 4b6fd29 | 2020-02-02 09:49:28 +0100 | [diff] [blame] | 166 | waiting for the 100-continue response. |
| Daniel Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 167 | https://curl.se/mail/lib-2008-08/0462.html |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 168 | |
| Daniel Stenberg | 917b1bb | 2019-02-14 10:46:18 +0100 | [diff] [blame] | 169 | 1.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รผhsen | 7b758e9 | 2019-04-03 17:16:18 +0200 | [diff] [blame] | 173 | have been received and delivered to the application. This is tricky, but is |
| Daniel Stenberg | 917b1bb | 2019-02-14 10:46:18 +0100 | [diff] [blame] | 174 | ultimately a broken server. |
| 175 | |
| 176 | See https://github.com/curl/curl/issues/2719 |
| 177 | |
| Daniel Stenberg | 12d655d | 2019-05-09 10:58:04 +0200 | [diff] [blame] | 178 | 1.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 Stenberg | 582d423 | 2016-04-10 23:52:40 +0200 | [diff] [blame] | 188 | 1.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 Stenberg | 710f057 | 2016-09-15 14:19:09 +0200 | [diff] [blame] | 198 | 1.11 CURLOPT_SEEKFUNCTION not called with CURLFORM_STREAM |
| Daniel Stenberg | ac09c42 | 2016-08-03 00:21:42 +0200 | [diff] [blame] | 199 | |
| 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 Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 210 | 2. TLS |
| 211 | |
| Michael Kaufmann | bcca842 | 2017-01-28 19:45:52 +0100 | [diff] [blame] | 212 | 2.1 CURLINFO_SSL_VERIFYRESULT has limited support |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 213 | |
| Emil Engler | 42d8d9a | 2020-04-23 21:36:35 +0200 | [diff] [blame] | 214 | 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 Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 216 | |
| Michael Kaufmann | bcca842 | 2017-01-28 19:45:52 +0100 | [diff] [blame] | 217 | 2.2 DER in keychain |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 218 | |
| 219 | Curl doesn't recognize certificates in DER format in keychain, but it works |
| Daniel Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 220 | with PEM. https://curl.se/bug/view.cgi?id=1065 |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 221 | |
| Daniel Stenberg | 2355857 | 2020-09-23 08:50:52 +0200 | [diff] [blame] | 222 | 2.3 Unable to use PKCS12 certificate with Secure Transport |
| 223 | |
| 224 | See https://github.com/curl/curl/issues/5403 |
| 225 | |
| Daniel Gustafsson | f0a6ea2 | 2020-07-16 10:11:10 +0200 | [diff] [blame] | 226 | 2.4 Secure Transport won't import PKCS#12 client certificates without a password |
| Jay Satiro | f023f25 | 2017-03-06 19:13:03 -0500 | [diff] [blame] | 227 | |
| 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 Stenberg | f022c91 | 2018-04-30 10:26:26 +0200 | [diff] [blame] | 232 | 2.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 Stenberg | 9f475f7 | 2016-05-17 11:13:48 +0200 | [diff] [blame] | 239 | |
| Daniel Stenberg | 8a6a01c | 2018-05-31 17:41:42 +0200 | [diff] [blame] | 240 | 2.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 Stenberg | 5114f82 | 2019-03-07 13:14:51 +0100 | [diff] [blame] | 268 | 2.7 Client cert (MTLS) issues with Schannel |
| 269 | |
| 270 | See https://github.com/curl/curl/issues/3145 |
| 271 | |
| Daniel Stenberg | 53cc6c7 | 2019-06-24 23:23:13 +0200 | [diff] [blame] | 272 | 2.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 Stenberg | 8a6a01c | 2018-05-31 17:41:42 +0200 | [diff] [blame] | 277 | |
| Daniel Stenberg | 3ab45a9 | 2019-12-16 16:20:16 +0100 | [diff] [blame] | 278 | 2.9 TLS session cache doesn't work with TFO |
| 279 | |
| 280 | See https://github.com/curl/curl/issues/4301 |
| 281 | |
| Daniel Stenberg | 0c511b4 | 2020-04-04 00:01:35 +0200 | [diff] [blame] | 282 | 2.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 Satiro | 6332f65 | 2020-08-18 03:24:38 -0400 | [diff] [blame] | 292 | 2.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 Stenberg | 0673cb4 | 2020-11-04 23:56:12 +0100 | [diff] [blame] | 300 | 2.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 Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 306 | 3. Email protocols |
| 307 | |
| 308 | 3.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 Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 313 | https://curl.se/bug/view.cgi?id=1366 |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 314 | |
| 315 | 3.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 Volgarev | 4a4609b | 2020-01-14 17:22:38 -0500 | [diff] [blame] | 320 | 3.3 POP3 expects "CRLF.CRLF" eob for some single-line responses |
| Daniel Stenberg | a69f27a | 2016-06-28 08:24:16 +0200 | [diff] [blame] | 321 | |
| 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 Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 324 | this for the NOOP and DELE commands. https://curl.se/bug/?i=740 |
| Daniel Stenberg | a69f27a | 2016-06-28 08:24:16 +0200 | [diff] [blame] | 325 | |
| Pavel Volgarev | 4a4609b | 2020-01-14 17:22:38 -0500 | [diff] [blame] | 326 | 3.4 AUTH PLAIN for SMTP is not working on all servers |
| Daniel Stenberg | 4466656 | 2020-01-09 16:19:34 +0100 | [diff] [blame] | 327 | |
| 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 Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 332 | |
| 333 | 4. Command line |
| 334 | |
| Daniel Stenberg | 6b35e4c | 2018-05-21 23:43:36 +0200 | [diff] [blame] | 335 | 4.1 -J and -O with %-encoded file names |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 336 | |
| 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 Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 343 | https://curl.se/bug/view.cgi?id=1294 |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 344 | |
| Daniel Stenberg | 6b35e4c | 2018-05-21 23:43:36 +0200 | [diff] [blame] | 345 | -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 Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 352 | 4.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 Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 358 | https://curl.se/bug/view.cgi?id=1169 |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 359 | |
| 360 | 4.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 Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 366 | https://curl.se/mail/lib-2008-01/0080.html and Mandriva bug report |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 367 | https://qa.mandriva.com/show_bug.cgi?id=22565 |
| 368 | |
| Emil Engler | 8cf8b29 | 2020-05-02 08:38:17 +0200 | [diff] [blame] | 369 | 4.4 Improve --data-urlencode space encoding |
| Daniel Stenberg | 411d0c7 | 2019-01-10 15:55:37 +0100 | [diff] [blame] | 370 | |
| 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 Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 376 | 5. Build and portability issues |
| 377 | |
| Daniel Stenberg | 938228d | 2020-05-15 16:58:45 +0200 | [diff] [blame] | 378 | 5.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 Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 386 | 5.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 Stenberg | e6ac3ba | 2019-02-14 10:49:22 +0100 | [diff] [blame] | 392 | 5.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 Szakats | 308c243 | 2020-05-25 19:44:04 +0000 | [diff] [blame] | 396 | 5.4 Build with statically built dependency |
| Daniel Stenberg | a75de9d | 2019-02-14 15:36:43 +0100 | [diff] [blame] | 397 | |
| Daniel Stenberg | 4b88ac7 | 2020-05-11 11:24:33 +0200 | [diff] [blame] | 398 | 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 Szakats | 308c243 | 2020-05-25 19:44:04 +0000 | [diff] [blame] | 400 | libraries, the dependency "chain" is handled automatically by the library |
| Daniel Stenberg | 4b88ac7 | 2020-05-11 11:24:33 +0200 | [diff] [blame] | 401 | 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 Stenberg | a75de9d | 2019-02-14 15:36:43 +0100 | [diff] [blame] | 417 | |
| Marcel Raad | aa6cf7f | 2020-01-02 23:07:34 +0100 | [diff] [blame] | 418 | 5.5 can't handle Unicode arguments in non-Unicode builds on Windows |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 419 | |
| 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 Raad | aa6cf7f | 2020-01-02 23:07:34 +0100 | [diff] [blame] | 423 | 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 Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 426 | |
| Daniel Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 427 | https://curl.se/bug/?i=345 |
| 428 | https://curl.se/bug/?i=731 |
| 429 | https://curl.se/bug/?i=3747 |
| Jay Satiro | 9f740d3 | 2016-04-06 02:43:13 -0400 | [diff] [blame] | 430 | |
| Daniel Stenberg | 141e23d | 2020-10-21 08:25:19 +0200 | [diff] [blame] | 431 | 5.6 cmake: use correct SONAME for shared library |
| Daniel Stenberg | b73b423 | 2016-08-29 23:01:49 +0200 | [diff] [blame] | 432 | |
| Daniel Stenberg | 141e23d | 2020-10-21 08:25:19 +0200 | [diff] [blame] | 433 | The autotools build sets the SONAME properly according to VERSIONINFO in |
| 434 | lib/Makefile.am and so should cmake to make comparable build. |
| Daniel Stenberg | b73b423 | 2016-08-29 23:01:49 +0200 | [diff] [blame] | 435 | |
| Daniel Stenberg | 141e23d | 2020-10-21 08:25:19 +0200 | [diff] [blame] | 436 | See https://github.com/curl/curl/pull/5935 |
| Daniel Stenberg | 13f09f6 | 2019-01-10 16:52:39 +0100 | [diff] [blame] | 437 | |
| Steve Holme | 7c6c219 | 2016-08-31 11:33:22 +0100 | [diff] [blame] | 438 | 5.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 Satiro | ea3366c | 2016-04-05 18:56:35 -0400 | [diff] [blame] | 451 | |
| Daniel Stenberg | bd742ad | 2016-09-26 11:44:00 +0200 | [diff] [blame] | 452 | 5.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 Mundry | 9eda44a | 2016-09-30 20:34:21 +0200 | [diff] [blame] | 457 | when the script continues to execute and do more tests and possibly check for |
| 458 | more libraries. |
| Daniel Stenberg | bd742ad | 2016-09-26 11:44:00 +0200 | [diff] [blame] | 459 | |
| 460 | This can make subsequent checks for libraries wrongly detect another |
| Sebastian Mundry | 9eda44a | 2016-09-30 20:34:21 +0200 | [diff] [blame] | 461 | installation in a directory that was previously added to LDFLAGS by another |
| Daniel Stenberg | bd742ad | 2016-09-26 11:44:00 +0200 | [diff] [blame] | 462 | library check! |
| 463 | |
| Sebastian Mundry | 9eda44a | 2016-09-30 20:34:21 +0200 | [diff] [blame] | 464 | A possibly better way to do these checks would be to keep the pristine LDFLAGS |
| Daniel Stenberg | bd742ad | 2016-09-26 11:44:00 +0200 | [diff] [blame] | 465 | even after successful checks and instead add those verified paths to a |
| Sebastian Mundry | 9eda44a | 2016-09-30 20:34:21 +0200 | [diff] [blame] | 466 | separate variable that only after all library checks have been performed gets |
| Daniel Stenberg | bd742ad | 2016-09-26 11:44:00 +0200 | [diff] [blame] | 467 | appended to LDFLAGS. |
| 468 | |
| Daniel Stenberg | 96e3c07 | 2016-10-16 12:54:59 +0200 | [diff] [blame] | 469 | 5.9 Utilize Requires.private directives in libcurl.pc |
| 470 | |
| 471 | https://github.com/curl/curl/issues/864 |
| 472 | |
| Daniel Stenberg | ce980c2 | 2020-11-04 23:48:56 +0100 | [diff] [blame] | 473 | 5.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 Stenberg | beea6f8 | 2020-03-05 14:27:14 +0100 | [diff] [blame] | 479 | 5.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 Stenberg | 141e23d | 2020-10-21 08:25:19 +0200 | [diff] [blame] | 485 | 5.12 cmake: support build with GnuTLS |
| 486 | |
| 487 | 5.13 cmake: unusable tool_hugehelp.c with MinGW |
| 488 | |
| 489 | see https://github.com/curl/curl/issues/3125 |
| 490 | |
| 491 | 5.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 Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 497 | 6. Authentication |
| Jay Satiro | 674b57e | 2016-02-08 17:40:53 -0500 | [diff] [blame] | 498 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 499 | 6.1 NTLM authentication and unicode |
| Daniel Stenberg | 5fde69c | 2015-09-20 13:34:16 +0200 | [diff] [blame] | 500 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 501 | NTLM authentication involving unicode user name or password only works |
| Daniel Stenberg | 2429f45 | 2020-08-07 17:11:52 +0200 | [diff] [blame] | 502 | properly if built with UNICODE defined together with the Schannel |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 503 | backend. The original problem was mentioned in: |
| Daniel Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 504 | https://curl.se/mail/lib-2009-10/0024.html |
| 505 | https://curl.se/bug/view.cgi?id=896 |
| Daniel Stenberg | ad48b17 | 2015-04-15 02:48:20 +0200 | [diff] [blame] | 506 | |
| Daniel Stenberg | 2429f45 | 2020-08-07 17:11:52 +0200 | [diff] [blame] | 507 | The Schannel version verified to work as mentioned in |
| Daniel Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 508 | https://curl.se/mail/lib-2012-07/0073.html |
| Daniel Stenberg | 31987c3 | 2015-03-29 23:20:15 +0200 | [diff] [blame] | 509 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 510 | 6.2 MIT Kerberos for Windows build |
| Daniel Stenberg | 8a8f9a5 | 2013-12-15 23:38:37 +0100 | [diff] [blame] | 511 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 512 | 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 Szakats | 13ef623 | 2017-08-08 19:22:34 +0000 | [diff] [blame] | 514 | the KfW library. See ticket #5601 at https://krbdev.mit.edu/rt/ |
| Steve Holme | 7b9365c | 2013-11-27 22:33:22 +0000 | [diff] [blame] | 515 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 516 | 6.3 NTLM in system context uses wrong name |
| Daniel Stenberg | c9d8c00 | 2013-11-05 10:21:30 +0100 | [diff] [blame] | 517 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 518 | 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 Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 520 | to what winhttp does. See https://curl.se/bug/view.cgi?id=535 |
| Daniel Stenberg | a22c478 | 2013-10-02 15:30:15 +0200 | [diff] [blame] | 521 | |
| Steve Holme | 088ffcb | 2016-08-31 11:22:12 +0100 | [diff] [blame] | 522 | 6.4 Negotiate and Kerberos V5 need a fake user name |
| Daniel Stenberg | 9b8df58 | 2013-06-11 00:21:16 +0200 | [diff] [blame] | 523 | |
| Steve Holme | 088ffcb | 2016-08-31 11:22:12 +0100 | [diff] [blame] | 524 | 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 Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 528 | 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 Holme | 088ffcb | 2016-08-31 11:22:12 +0100 | [diff] [blame] | 530 | 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 Stenberg | 84f7991 | 2013-05-21 23:58:52 +0200 | [diff] [blame] | 533 | |
| Daniel Gustafsson | 238494f | 2018-10-08 22:59:37 +0200 | [diff] [blame] | 534 | 6.5 NTLM doesn't support password with ยง character |
| Daniel Stenberg | 81758be | 2018-06-14 14:04:48 +0200 | [diff] [blame] | 535 | |
| 536 | https://github.com/curl/curl/issues/2120 |
| Daniel Stenberg | bce8bc2 | 2012-07-08 15:37:52 +0200 | [diff] [blame] | 537 | |
| Daniel Gustafsson | 10c91b6 | 2018-11-09 16:50:39 +0100 | [diff] [blame] | 538 | 6.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 Stenberg | 1853c88 | 2019-06-24 23:26:59 +0200 | [diff] [blame] | 549 | 6.7 Don't clear digest for single realm |
| 550 | |
| 551 | https://github.com/curl/curl/issues/3267 |
| 552 | |
| Daniel Stenberg | c048dd0 | 2020-06-04 10:40:32 +0200 | [diff] [blame] | 553 | 6.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 Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 562 | 7. FTP |
| Daniel Stenberg | 24af69a | 2012-07-08 15:34:58 +0200 | [diff] [blame] | 563 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 564 | 7.1 FTP without or slow 220 response |
| Daniel Stenberg | f110604 | 2010-02-14 22:51:43 +0000 | [diff] [blame] | 565 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 566 | 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 Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 571 | https://curl.se/bug/view.cgi?id=856 |
| Daniel Stenberg | 5a99bce | 2012-07-07 14:38:50 +0200 | [diff] [blame] | 572 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 573 | 7.2 FTP with CONNECT and slow server |
| Daniel Stenberg | 2d0aca3 | 2009-08-31 21:57:24 +0000 | [diff] [blame] | 574 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 575 | 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 Stenberg | bf5f912 | 2009-07-31 11:16:04 +0000 | [diff] [blame] | 580 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 581 | 7.3 FTP with NOBODY and FAILONERROR |
| Daniel Stenberg | 650543a | 2009-07-21 22:30:31 +0000 | [diff] [blame] | 582 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 583 | 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 Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 585 | https://curl.se/mail/lib-2008-07/0295.html |
| Daniel Stenberg | 63270b0 | 2009-05-11 12:40:48 +0000 | [diff] [blame] | 586 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 587 | 7.4 FTP with ACCT |
| Daniel Stenberg | f278d17 | 2009-04-18 22:18:35 +0000 | [diff] [blame] | 588 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 589 | 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 Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 592 | https://curl.se/bug/view.cgi?id=635 |
| Dan Fandrich | a97ab4f | 2009-01-08 01:09:29 +0000 | [diff] [blame] | 593 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 594 | 7.5 ASCII FTP |
| Dan Fandrich | a97ab4f | 2009-01-08 01:09:29 +0000 | [diff] [blame] | 595 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 596 | 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 Stenberg | f29d223 | 2008-08-24 22:08:42 +0000 | [diff] [blame] | 599 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 600 | 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 Stenberg | b39d409 | 2008-07-29 21:51:47 +0000 | [diff] [blame] | 604 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 605 | Since 7.15.4 at least line endings are converted. |
| Yang Tse | c62d553 | 2008-05-27 16:10:51 +0000 | [diff] [blame] | 606 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 607 | 7.6 FTP with NULs in URL parts |
| Daniel Stenberg | 6bae091 | 2008-01-28 16:04:52 +0000 | [diff] [blame] | 608 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 609 | 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 Stenberg | 07227e8 | 2008-01-08 22:15:19 +0000 | [diff] [blame] | 618 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 619 | 7.7 FTP and empty path parts in the URL |
| Daniel Stenberg | 0ff311a | 2007-09-06 13:38:05 +0000 | [diff] [blame] | 620 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 621 | 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 Stenberg | 2ea0523 | 2007-06-07 21:56:03 +0000 | [diff] [blame] | 627 | |
| Daniel Stenberg | 3533def | 2016-08-11 14:00:23 +0200 | [diff] [blame] | 628 | 7.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 Stenberg | 7cbbd1b | 2007-04-10 20:51:52 +0000 | [diff] [blame] | 639 | |
| Daniel Stenberg | 72be6ab | 2018-04-30 10:22:17 +0200 | [diff] [blame] | 640 | 7.9 Passive transfer tries only one IP address |
| 641 | |
| 642 | When doing FTP operations through a proxy at localhost, the reported spotted |
| Daniel Gustafsson | 238494f | 2018-10-08 22:59:37 +0200 | [diff] [blame] | 643 | that curl only tried to connect once to the proxy, while it had multiple |
| Daniel Stenberg | 72be6ab | 2018-04-30 10:22:17 +0200 | [diff] [blame] | 644 | 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 Stenberg | 6be2804 | 2020-03-28 23:04:14 +0100 | [diff] [blame] | 651 | 7.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 Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 659 | 8. TELNET |
| Daniel Stenberg | fbc4407 | 2007-01-27 23:02:17 +0000 | [diff] [blame] | 660 | |
| Daniel Gustafsson | 238494f | 2018-10-08 22:59:37 +0200 | [diff] [blame] | 661 | 8.1 TELNET and time limitations don't work |
| Daniel Stenberg | fbc4407 | 2007-01-27 23:02:17 +0000 | [diff] [blame] | 662 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 663 | When using telnet, the time limitation options don't work. |
| Daniel Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 664 | https://curl.se/bug/view.cgi?id=846 |
| Daniel Stenberg | 466d093 | 2006-09-03 22:52:42 +0000 | [diff] [blame] | 665 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 666 | 8.2 Microsoft telnet server |
| Daniel Stenberg | 8ed0d56 | 2006-05-14 22:49:23 +0000 | [diff] [blame] | 667 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 668 | There seems to be a problem when connecting to the Microsoft telnet server. |
| Daniel Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 669 | https://curl.se/bug/view.cgi?id=649 |
| Daniel Stenberg | c7a6346 | 2005-12-22 08:33:02 +0000 | [diff] [blame] | 670 | |
| Daniel Stenberg | 5fbfa1b | 2005-09-16 07:09:07 +0000 | [diff] [blame] | 671 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 672 | 9. SFTP and SCP |
| Daniel Stenberg | 17e8d60 | 2007-02-19 11:53:54 +0000 | [diff] [blame] | 673 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 674 | 9.1 SFTP doesn't do CURLOPT_POSTQUOTE correct |
| Daniel Stenberg | 15bc228 | 2005-08-17 09:41:54 +0000 | [diff] [blame] | 675 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 676 | 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 Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 681 | https://curl.se/bug/view.cgi?id=748 |
| Daniel Stenberg | 8f646ee | 2005-03-17 08:09:10 +0000 | [diff] [blame] | 682 | |
| Daniel Stenberg | a384e87 | 2020-05-15 17:01:32 +0200 | [diff] [blame] | 683 | 9.2 wolfssh: publickey auth doesn't work |
| 684 | |
| 685 | When building curl to use the wolfSSH backend for SFTP, the publickey |
| Viktor Szakats | 308c243 | 2020-05-25 19:44:04 +0000 | [diff] [blame] | 686 | authentication doesn't work. This is simply functionality not written for curl |
| Daniel Stenberg | a384e87 | 2020-05-15 17:01:32 +0200 | [diff] [blame] | 687 | yet, the necessary API for make this work is provided by wolfSSH. |
| 688 | |
| 689 | See https://github.com/curl/curl/issues/4820 |
| Daniel Stenberg | 8f646ee | 2005-03-17 08:09:10 +0000 | [diff] [blame] | 690 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 691 | 10. SOCKS |
| Daniel Stenberg | 95152ae | 2006-04-26 07:40:37 +0000 | [diff] [blame] | 692 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 693 | 10.3 FTPS over SOCKS |
| Daniel Stenberg | 0850aec | 2003-11-12 14:33:58 +0000 | [diff] [blame] | 694 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 695 | libcurl doesn't support FTPS over a SOCKS proxy. |
| Daniel Stenberg | 18b809e | 2003-10-17 12:21:48 +0000 | [diff] [blame] | 696 | |
| Daniel Stenberg | b207ccb | 2016-04-06 09:20:18 +0200 | [diff] [blame] | 697 | 10.4 active FTP over a SOCKS |
| 698 | |
| 699 | libcurl doesn't support active FTP over a SOCKS proxy |
| Daniel Stenberg | ca6f0a5 | 2016-04-08 13:21:52 +0200 | [diff] [blame] | 700 | |
| 701 | |
| 702 | 11. Internals |
| 703 | |
| 704 | 11.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 Stenberg | 645ed11 | 2016-04-08 13:23:28 +0200 | [diff] [blame] | 711 | |
| 712 | 11.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 Monnerat | 3954d6f | 2016-04-08 16:49:49 +0200 | [diff] [blame] | 718 | |
| Daniel Stenberg | c443a8c | 2016-10-27 23:45:58 +0200 | [diff] [blame] | 719 | 11.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 Stenberg | ffb2bc3 | 2017-08-18 16:04:55 +0200 | [diff] [blame] | 731 | 11.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 Stenberg | 822ef4c | 2018-04-30 10:17:10 +0200 | [diff] [blame] | 738 | 11.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 Stenberg | 8a9d6ee | 2019-12-16 16:17:16 +0100 | [diff] [blame] | 743 | See https://github.com/curl/curl/issues/1332 and |
| 744 | https://github.com/curl/curl/issues/4296 |
| Daniel Stenberg | 822ef4c | 2018-04-30 10:17:10 +0200 | [diff] [blame] | 745 | |
| Daniel Stenberg | 6bc8304 | 2018-06-14 13:55:45 +0200 | [diff] [blame] | 746 | 11.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 Gustafsson | 238494f | 2018-10-08 22:59:37 +0200 | [diff] [blame] | 750 | in there does however make it take 200 milliseconds to succeed - which is the |
| Daniel Stenberg | 6bc8304 | 2018-06-14 13:55:45 +0200 | [diff] [blame] | 751 | 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 Monnerat | 3954d6f | 2016-04-08 16:49:49 +0200 | [diff] [blame] | 759 | |
| Daniel Stenberg | 0f37c8d | 2019-09-05 14:21:59 +0200 | [diff] [blame] | 760 | 11.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 Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 767 | problem is available at https://curl.se/mail/lib-2008-09/0197.html |
| Daniel Stenberg | 0f37c8d | 2019-09-05 14:21:59 +0200 | [diff] [blame] | 768 | |
| 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 Stenberg | 34696ab | 2020-03-28 23:06:39 +0100 | [diff] [blame] | 772 | 11.8 DoH leaks memory after followlocation |
| 773 | |
| 774 | https://github.com/curl/curl/issues/4592 |
| Daniel Stenberg | 0f37c8d | 2019-09-05 14:21:59 +0200 | [diff] [blame] | 775 | |
| Daniel Stenberg | 96a617b | 2020-03-28 23:09:45 +0100 | [diff] [blame] | 776 | 11.9 DoH doesn't inherit all transfer options |
| 777 | |
| 778 | https://github.com/curl/curl/issues/4578 |
| 779 | |
| Jay Satiro | 42e1852 | 2020-04-11 16:05:18 -0400 | [diff] [blame] | 780 | 11.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 Stenberg | cb8cf9d | 2020-08-11 15:43:42 +0200 | [diff] [blame] | 784 | 11.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 Stenberg | 8ca54a0 | 2020-09-05 20:30:26 +0200 | [diff] [blame] | 790 | See https://github.com/curl/curl/issues/4915 and lib1541.c |
| Daniel Stenberg | cb8cf9d | 2020-08-11 15:43:42 +0200 | [diff] [blame] | 791 | |
| Daniel Gustafsson | afbf7d2 | 2020-11-05 09:36:24 +0100 | [diff] [blame^] | 792 | 11.12 'no_proxy' string-matches IPv6 numerical addresses |
| Daniel Stenberg | 712d16c | 2020-08-22 23:50:14 +0200 | [diff] [blame] | 793 | |
| 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 Monnerat | 3954d6f | 2016-04-08 16:49:49 +0200 | [diff] [blame] | 799 | 12. LDAP and OpenLDAP |
| 800 | |
| 801 | 12.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 Stenberg | 4d2f800 | 2020-11-04 14:02:01 +0100 | [diff] [blame] | 818 | https://curl.se/mail/lib-2016-01/0101.html |
| Daniel Stenberg | 27a6393 | 2016-04-25 11:20:23 +0200 | [diff] [blame] | 819 | |
| Daniel Stenberg | e80b5c8 | 2019-10-12 22:45:13 +0200 | [diff] [blame] | 820 | 12.2 LDAP on Windows does authentication wrong? |
| 821 | |
| 822 | https://github.com/curl/curl/issues/3116 |
| Daniel Stenberg | 27a6393 | 2016-04-25 11:20:23 +0200 | [diff] [blame] | 823 | |
| Daniel Stenberg | 73ca946 | 2019-12-16 16:15:39 +0100 | [diff] [blame] | 824 | 12.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 Stenberg | 5cb475d | 2020-11-04 23:43:43 +0100 | [diff] [blame] | 831 | 12.4 LDAPS with NSS is slow |
| 832 | |
| 833 | See https://github.com/curl/curl/issues/5874 |
| 834 | |
| Daniel Stenberg | 4ddc772 | 2016-10-16 11:53:54 +0200 | [diff] [blame] | 835 | 13. TCP/IP |
| Daniel Stenberg | 27a6393 | 2016-04-25 11:20:23 +0200 | [diff] [blame] | 836 | |
| 837 | 13.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 Stenberg | d767090 | 2018-01-28 14:38:38 +0100 | [diff] [blame] | 844 | |
| 845 | 14. DICT |
| 846 | |
| 847 | 14.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 |