TODO: remove already implemented or bad items

- remove "connect to multiple IPs in parallel"
- remove "CURLOPT_RESOLVE for any port number", It can already be
  accomplished with CURLOPT_CONNECT_TO
- remove "dynamically load modules", we don't believe in this
- remove "netrc caching and sharing", we already cache it
- remove "Offer API to flush the connection pool", this is effectively
  what CURLMOPT_NETWORK_CHANGED now allows
- remove "WebSocket read callback", introduced in 8.16.0

Closes #18542
This commit is contained in:
Daniel Stenberg 2025-09-14 11:44:35 +02:00
parent d52af3c692
commit 6bb53f29ef
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2

View file

@ -23,24 +23,18 @@
1.4 alt-svc sharing
1.5 get rid of PATH_MAX
1.6 thread-safe sharing
1.8 CURLOPT_RESOLVE for any port number
1.10 auto-detect proxy
1.11 minimize dependencies with dynamically loaded modules
1.12 updated DNS server while running
1.13 c-ares and CURLOPT_OPENSOCKETFUNCTION
1.14 connect to multiple IPs in parallel
1.15 Monitor connections in the connection pool
1.16 Try to URL encode given URL
1.17 Add support for IRIs
1.18 try next proxy if one does not work
1.19 provide timing info for each redirect
1.20 SRV and URI DNS records
1.21 netrc caching and sharing
1.22 CURLINFO_PAUSE_STATE
1.23 Offer API to flush the connection pool
1.25 Expose tried IP addresses that failed
1.28 FD_CLOEXEC
1.29 WebSocket read callback
1.30 config file parsing
1.31 erase secrets from heap/stack after use
1.32 add asynch getaddrinfo support
@ -252,14 +246,6 @@
share between multiple concurrent threads. Fixing this would enable more
users to share data in more powerful ways.
1.8 CURLOPT_RESOLVE for any port number
This option allows applications to set a replacement IP address for a given
host + port pair. Consider making support for providing a replacement address
for the hostname on all port numbers.
See https://github.com/curl/curl/issues/1264
1.10 auto-detect proxy
libcurl could be made to detect the system proxy setup automatically and use
@ -272,14 +258,6 @@
libdetectproxy is a (C++) library for detecting the proxy on Windows
https://github.com/paulharris/libdetectproxy
1.11 minimize dependencies with dynamically loaded modules
We can create a system with loadable modules/plug-ins, where these modules
would be the ones that link to 3rd party libs. That would allow us to avoid
having to load ALL dependencies since only the necessary ones for this
app/invoke/used protocols would be necessary to load. See
https://github.com/curl/curl/issues/349
1.12 updated DNS server while running
If /etc/resolv.conf gets updated while a program using libcurl is running, it
@ -301,17 +279,6 @@
See https://github.com/curl/curl/issues/2734
1.14 connect to multiple IPs in parallel
curl currently implements the happy eyeball algorithm for connecting to the
IPv4 and IPv6 alternatives for a host in parallel, sticking with the
connection that "wins". We could implement a similar algorithm per individual
IP family as well when there are multiple available addresses: start with the
first address, then start a second attempt N milliseconds after and then a
third another N milliseconds later. That way there would be less waiting when
the first IP has problems. It also improves the connection timeout value
handling for multiple address situations.
1.15 Monitor connections in the connection pool
libcurl's connection cache or pool holds a number of open connections for the
@ -368,24 +335,11 @@
Offer support for resolving SRV and URI DNS records for libcurl to know which
server to connect to for various protocols (including HTTP).
1.21 netrc caching and sharing
The netrc file is read and parsed each time a connection is setup, which
means that if a transfer needs multiple connections for authentication or
redirects, the file might be reread (and parsed) multiple times. This makes
it impossible to provide the file as a pipe.
1.22 CURLINFO_PAUSE_STATE
Return information about the transfer's current pause state, in both
directions. https://github.com/curl/curl/issues/2588
1.23 Offer API to flush the connection pool
Sometimes applications want to flush all the existing connections kept alive.
An API could allow a forced flush or just a forced loop that would properly
close all connections that have been closed by the server already.
1.25 Expose tried IP addresses that failed
When libcurl fails to connect to a host, it could offer the application the
@ -403,13 +357,6 @@
https://github.com/curl/curl/issues/2252
1.29 WebSocket read callback
Call the read callback once the connection is established to allow sending
the first message in the connection.
https://github.com/curl/curl/issues/11402
1.30 config file parsing
Consider providing an API, possibly in a separate companion library, for