Skip to content
TODO 34.8 KiB
Newer Older
Yang Tse's avatar
 
Yang Tse committed
                                  _   _ ____  _
                              ___| | | |  _ \| |
                             / __| | | | |_) | |
                            | (__| |_| |  _ <| |___
                             \___|\___/|_| \_\_____|

                Things that could be nice to do in the future
 Things to do in project cURL. Please tell us what you think, contribute and
 Be aware that these are things that we could do, or have once been considered
 things we could do. If you want to work on any of these areas, please
 consider bringing it up for discussions first on the mailing list so that we
 all agree it is still a good idea for the project!

Daniel Stenberg's avatar
Daniel Stenberg committed
 All bugs documented in the KNOWN_BUGS document are subject for fixing!

 1. libcurl
 1.2 More data sharing
 1.3 struct lifreq
 1.5 get rid of PATH_MAX
 1.6 Modified buffer size approach
 1.7 Detect when called from within callbacks
 1.8 Allow SSL (HTTPS) to proxy
 1.9 Cache negative name resolves
Daniel Stenberg's avatar
Daniel Stenberg committed
 1.10 Support IDNA2008
 1.11 minimize dependencies with dynamicly loaded modules
 1.12 have form functions use CURL handle argument
 1.13 Add CURLOPT_MAIL_CLIENT option
 1.14 Typesafe curl_easy_setopt()
Daniel Stenberg's avatar
Daniel Stenberg committed
 1.15 TCP Fast Open
 1.16 Try to URL encode given URL
 1.17 Add support for IRIs
 1.18 try next proxy if one doesn't work
 1.19 Timeout idle connections from the pool

 2. libcurl - multi interface
 2.1 More non-blocking
 2.2 Better support for same name resolves
 2.3 Non-blocking curl_multi_remove_handle()
 2.4 Split connect and authentication process
 2.5 Edge-triggered sockets should work
 3.1 Update date and version in man pages
 3.2 Provide cmake config-file
 4.2 Alter passive/active on failure and retry
 4.3 Earlier bad letter detection
 4.4 REST for large files
 4.5 ASCII support
 4.6 GSSAPI via Windows SSPI
 4.7 STAT for LIST without data connection
 5.1 Better persistency for HTTP 1.0
 5.2 support FF3 sqlite cookie files
 5.3 Rearrange request header order
 5.6 Refuse "downgrade" redirects
 5.7 More compressions

 6. TELNET
 6.1 ditch stdin
 6.2 ditch telnet-specific select
 6.3 feature negotiation debug data
 6.4 send data in chunks
 7.2 Enhanced capability support
 8.2 Enhanced capability support
 9.1 Enhanced capability support
 10. LDAP
 10.1 SASL based authentication mechanisms
Steve Holme's avatar
Steve Holme committed
 11. SMB
 11.1 File listing support
 11.2 Honor file timestamps
 11.3 Use NTLMv2
 11.4 Create remote directories
Steve Holme's avatar
Steve Holme committed
 12. New protocols
 12.1 RSYNC

 13. SSL
 13.1 Disable specific versions
 13.2 Provide mutex locking API
 13.3 Evaluate SSL patches
 13.4 Cache OpenSSL contexts
 13.5 Export session ids
 13.6 Provide callback for cert verification
 13.7 improve configure --with-ssl
 13.8 Support DANE

 14. GnuTLS
 14.1 SSL engine stuff
 14.2 check connection

 15. WinSSL/SChannel
 15.1 Add support for client certificate authentication
 15.2 Add support for custom server certificate validation
 15.3 Add support for the --ciphers option

 16. SASL
 16.1 Other authentication mechanisms
 16.2 Add QOP support to GSSAPI authentication
 16.3 Support binary messages (i.e.: non-base64)
 17.1 sync
 17.2 glob posts
 17.3 prevent file overwriting
 17.4 simultaneous parallel transfers
 17.5 provide formpost headers
 17.6 warning when setting an option
 17.7 warning when sending binary output to terminal
 17.8 offer color-coded HTTP header output
 17.9 Choose the name of file in braces for complex URLs
 17.10 improve how curl works in a windows console window
 17.11 -w output to stderr
 17.12 keep running, read instructions from pipe/socket
 17.13 support metalink in http headers
 17.14 --fail without --location should treat 3xx as a failure

 18. Build
 18.1 roffit

 19. Test suite
 19.1 SSL tunnel
 19.2 nicer lacking perl message
 19.3 more protocols supported
 19.4 more platforms supported
 19.5 Add support for concurrent connections
 19.6 Use the RFC6265 test suite

 20. Next SONAME bump
 20.1 http-style HEAD output for FTP
 20.2 combine error codes
 20.3 extend CURLOPT_SOCKOPTFUNCTION prototype

 21. Next major release
 21.1 cleanup return codes
 21.2 remove obsolete defines
 21.3 size_t
 21.4 remove several functions
 21.5 remove CURLOPT_FAILONERROR
 21.6 remove CURLOPT_DNS_USE_GLOBAL_CACHE
 21.7 remove progress meter from libcurl
 21.8 remove 'curl_httppost' from public
==============================================================================
 curl_share_* functions already exist and work, and they can be extended to
 share more. For example, enable sharing of the ares channel and the
 connection cache.
 Use 'struct lifreq' and SIOCGLIFADDR instead of 'struct ifreq' and
 SIOCGIFADDR on newer Solaris versions as they claim the latter is obsolete.
 To support IPv6 interface addresses for network interfaces properly.

 libcurl built without an asynchronous resolver library uses alarm() to time
 out DNS lookups. When a timeout occurs, this causes libcurl to jump from the
Yang Tse's avatar
 
Yang Tse committed
 signal handler back into the library with a sigsetjmp, which effectively
 causes libcurl to continue running within the signal handler. This is
 non-portable and could cause problems on some platforms. A discussion on the
 problem is available at https://curl.haxx.se/mail/lib-2008-09/0197.html

 Also, alarm() provides timeout resolution only to the nearest second. alarm
 ought to be replaced by setitimer on systems that support it.

1.5 get rid of PATH_MAX

 Having code use and rely on PATH_MAX is not nice:
 http://insanecoding.blogspot.com/2007/11/pathmax-simply-isnt.html

 Currently the SSH based code uses it a bit, but to remove PATH_MAX from there
 we need libssh2 to properly tell us when we pass in a too small buffer and
 its current API (as of libssh2 1.2.7) doesn't.

1.6 Modified buffer size approach
Loading
Loading full blame…