| Daniel Stenberg | 7c37c6a | 2000-05-22 17:35:35 +0000 | [diff] [blame] | 1 | _ _ ____ _ |
| 2 | ___| | | | _ \| | |
| 3 | / __| | | | |_) | | |
| 4 | | (__| |_| | _ <| |___ |
| 5 | \___|\___/|_| \_\_____| |
| 6 | |
| 7 | TODO |
| 8 | |
| Daniel Stenberg | 9d68fde | 2002-08-14 23:35:19 +0000 | [diff] [blame] | 9 | Things to do in project cURL. Please tell us what you think, contribute and |
| 10 | send us patches that improve things! Also check the http://curl.haxx.se/dev |
| 11 | web section for various technical development notes. |
| Daniel Stenberg | 7c37c6a | 2000-05-22 17:35:35 +0000 | [diff] [blame] | 12 | |
| Daniel Stenberg | 3660f67 | 2003-08-11 16:17:51 +0000 | [diff] [blame] | 13 | All bugs documented in the KNOWN_BUGS document are subject for fixing! |
| 14 | |
| Daniel Stenberg | e60e741 | 2001-11-02 12:51:18 +0000 | [diff] [blame] | 15 | LIBCURL |
| Daniel Stenberg | 6704d44 | 2001-08-22 11:22:43 +0000 | [diff] [blame] | 16 | |
| Daniel Stenberg | 9d68fde | 2002-08-14 23:35:19 +0000 | [diff] [blame] | 17 | * Introduce an interface to libcurl that allows applications to easier get to |
| 18 | know what cookies that are received. Pushing interface that calls a |
| 19 | callback on each received cookie? Querying interface that asks about |
| Daniel Stenberg | eb6a14f | 2003-01-07 07:54:14 +0000 | [diff] [blame] | 20 | existing cookies? We probably need both. Enable applications to modify |
| Daniel Stenberg | 1a393f5 | 2003-06-26 11:38:53 +0000 | [diff] [blame] | 21 | existing cookies as well. http://curl.haxx.se/dev/COOKIES |
| Daniel Stenberg | 2c39a43 | 2001-07-02 08:21:25 +0000 | [diff] [blame] | 22 | |
| Daniel Stenberg | 2d50391 | 2001-06-19 09:12:27 +0000 | [diff] [blame] | 23 | * Introduce another callback interface for upload/download that makes one |
| 24 | less copy of data and thus a faster operation. |
| Daniel Stenberg | e60e741 | 2001-11-02 12:51:18 +0000 | [diff] [blame] | 25 | [http://curl.haxx.se/dev/no_copy_callbacks.txt] |
| 26 | |
| Daniel Stenberg | 3660f67 | 2003-08-11 16:17:51 +0000 | [diff] [blame] | 27 | * More data sharing. curl_share_* functions already exist and work, and they |
| Daniel Stenberg | 097938e | 2004-03-01 09:08:52 +0000 | [diff] [blame] | 28 | can be extended to share more. For example, enable sharing of the ares |
| 29 | channel. |
| 30 | |
| 31 | * Introduce a new error code indicating authentication problems (for proxy |
| 32 | CONNECT error 407 for example). This cannot be an error code, we must not |
| 33 | return informational stuff as errors, consider a new info returned by |
| 34 | curl_easy_getinfo() #845941 |
| Daniel Stenberg | 01cfe67 | 2002-01-18 12:48:36 +0000 | [diff] [blame] | 35 | |
| Daniel Stenberg | 7cb10a1 | 2004-03-02 10:08:04 +0000 | [diff] [blame^] | 36 | * Option to set the SO_KEEPALIVE socket option to make libcurl notice and |
| 37 | disconnect very long time idle connections. |
| Daniel Stenberg | 558d12d | 2001-12-17 10:32:10 +0000 | [diff] [blame] | 38 | |
| Daniel Stenberg | 87c4351 | 2002-08-26 22:32:46 +0000 | [diff] [blame] | 39 | LIBCURL - multi interface |
| 40 | |
| Daniel Stenberg | 3660f67 | 2003-08-11 16:17:51 +0000 | [diff] [blame] | 41 | * Add curl_multi_timeout() to make libcurl's ares-functionality better. |
| 42 | |
| Daniel Stenberg | 87c4351 | 2002-08-26 22:32:46 +0000 | [diff] [blame] | 43 | * Make sure we don't ever loop because of non-blocking sockets return |
| Daniel Stenberg | 065b87e | 2003-02-24 18:14:48 +0000 | [diff] [blame] | 44 | EWOULDBLOCK or similar. This FTP command sending, the SSL connection etc. |
| Daniel Stenberg | 87c4351 | 2002-08-26 22:32:46 +0000 | [diff] [blame] | 45 | |
| Daniel Stenberg | 065b87e | 2003-02-24 18:14:48 +0000 | [diff] [blame] | 46 | * Make transfers treated more carefully. We need a way to tell libcurl we |
| 47 | have data to write, as the current system expects us to upload data each |
| 48 | time the socket is writable and there is no way to say that we want to |
| 49 | upload data soon just not right now, without that aborting the upload. The |
| 50 | opposite situation should be possible as well, that we tell libcurl we're |
| 51 | ready to accept read data. Today libcurl feeds the data as soon as it is |
| 52 | available for reading, no matter what. |
| Daniel Stenberg | 87c4351 | 2002-08-26 22:32:46 +0000 | [diff] [blame] | 53 | |
| Daniel Stenberg | e60e741 | 2001-11-02 12:51:18 +0000 | [diff] [blame] | 54 | DOCUMENTATION |
| 55 | |
| Daniel Stenberg | 87c4351 | 2002-08-26 22:32:46 +0000 | [diff] [blame] | 56 | * More and better |
| Daniel Stenberg | e60e741 | 2001-11-02 12:51:18 +0000 | [diff] [blame] | 57 | |
| 58 | FTP |
| 59 | |
| Daniel Stenberg | 339f84f | 2003-07-30 13:41:59 +0000 | [diff] [blame] | 60 | * Support the most common FTP proxies, Philip Newton provided a list |
| 61 | allegedly from ncftp: |
| 62 | http://curl.haxx.se/mail/archive-2003-04/0126.html |
| 63 | |
| Daniel Stenberg | c0acaa5 | 2003-04-28 17:29:32 +0000 | [diff] [blame] | 64 | * Make CURLOPT_FTPPORT support an additional port number on the IP/if/name, |
| 65 | like "blabla:[port]" or possibly even "blabla:[portfirst]-[portsecond]". |
| 66 | |
| Daniel Stenberg | b756797 | 2003-05-26 08:19:06 +0000 | [diff] [blame] | 67 | * FTP ASCII transfers do not follow RFC959. They don't convert the data |
| 68 | accordingly. |
| Daniel Stenberg | 0058e87 | 2001-05-18 12:55:13 +0000 | [diff] [blame] | 69 | |
| Daniel Stenberg | eb6a14f | 2003-01-07 07:54:14 +0000 | [diff] [blame] | 70 | * Since USERPWD always override the user and password specified in URLs, we |
| 71 | might need another way to specify user+password for anonymous ftp logins. |
| 72 | |
| Daniel Stenberg | e60e741 | 2001-11-02 12:51:18 +0000 | [diff] [blame] | 73 | HTTP |
| Daniel Stenberg | 2c39a43 | 2001-07-02 08:21:25 +0000 | [diff] [blame] | 74 | |
| Daniel Stenberg | d095b20 | 2003-10-17 12:37:15 +0000 | [diff] [blame] | 75 | * Digest and GSS-Negotiate support for HTTP proxies. They only work on |
| 76 | direct-connections to the server. |
| Daniel Stenberg | 01cfe67 | 2002-01-18 12:48:36 +0000 | [diff] [blame] | 77 | |
| 78 | * Pipelining. Sending multiple requests before the previous one(s) are done. |
| 79 | This could possibly be implemented using the multi interface to queue |
| 80 | requests and the response data. |
| Daniel Stenberg | 7c37c6a | 2000-05-22 17:35:35 +0000 | [diff] [blame] | 81 | |
| Daniel Stenberg | e60e741 | 2001-11-02 12:51:18 +0000 | [diff] [blame] | 82 | TELNET |
| Daniel Stenberg | 7c37c6a | 2000-05-22 17:35:35 +0000 | [diff] [blame] | 83 | |
| Daniel Stenberg | 01cfe67 | 2002-01-18 12:48:36 +0000 | [diff] [blame] | 84 | * Reading input (to send to the remote server) on stdin is a crappy solution |
| 85 | for library purposes. We need to invent a good way for the application to |
| 86 | be able to provide the data to send. |
| 87 | |
| 88 | * Move the telnet support's network select() loop go away and merge the code |
| 89 | into the main transfer loop. Until this is done, the multi interface won't |
| 90 | work for telnet. |
| 91 | |
| Daniel Stenberg | e60e741 | 2001-11-02 12:51:18 +0000 | [diff] [blame] | 92 | SSL |
| 93 | |
| Daniel Stenberg | 5cffe05 | 2002-02-07 10:43:43 +0000 | [diff] [blame] | 94 | * If you really want to improve the SSL situation, you should probably have a |
| 95 | look at SSL cafile loading as well - quick traces look to me like these are |
| 96 | done on every request as well, when they should only be necessary once per |
| 97 | ssl context (or once per handle). Even better would be to support the SSL |
| 98 | CAdir option - instead of loading all of the root CA certs for every |
| 99 | request, this option allows you to only read the CA chain that is actually |
| 100 | required (into the cache)... |
| 101 | |
| Daniel Stenberg | 60f1926 | 2001-11-13 09:56:29 +0000 | [diff] [blame] | 102 | * Add an interface to libcurl that enables "session IDs" to get |
| 103 | exported/imported. Cris Bailiff said: "OpenSSL has functions which can |
| 104 | serialise the current SSL state to a buffer of your choice, and |
| 105 | recover/reset the state from such a buffer at a later date - this is used |
| Daniel Stenberg | 01cfe67 | 2002-01-18 12:48:36 +0000 | [diff] [blame] | 106 | by mod_ssl for apache to implement and SSL session ID cache". This whole |
| 107 | idea might become moot if we enable the 'data sharing' as mentioned in the |
| 108 | LIBCURL label above. |
| Daniel Stenberg | 60f1926 | 2001-11-13 09:56:29 +0000 | [diff] [blame] | 109 | |
| Daniel Stenberg | 5c4b422 | 2002-02-18 10:51:28 +0000 | [diff] [blame] | 110 | * OpenSSL supports a callback for customised verification of the peer |
| 111 | certificate, but this doesn't seem to be exposed in the libcurl APIs. Could |
| 112 | it be? There's so much that could be done if it were! (brought by Chris |
| 113 | Clark) |
| 114 | |
| Daniel Stenberg | e60e741 | 2001-11-02 12:51:18 +0000 | [diff] [blame] | 115 | * Make curl's SSL layer option capable of using other free SSL libraries. |
| 116 | Such as the Mozilla Security Services |
| 117 | (http://www.mozilla.org/projects/security/pki/nss/) and GNUTLS |
| 118 | (http://gnutls.hellug.gr/) |
| 119 | |
| Daniel Stenberg | 01cfe67 | 2002-01-18 12:48:36 +0000 | [diff] [blame] | 120 | LDAP |
| 121 | |
| 122 | * Look over the implementation. The looping will have to "go away" from the |
| 123 | lib/ldap.c source file and get moved to the main network code so that the |
| 124 | multi interface and friends will work for LDAP as well. |
| 125 | |
| Daniel Stenberg | 3e049a9 | 2001-11-13 09:06:32 +0000 | [diff] [blame] | 126 | CLIENT |
| Daniel Stenberg | e60e741 | 2001-11-02 12:51:18 +0000 | [diff] [blame] | 127 | |
| Daniel Stenberg | 87c4351 | 2002-08-26 22:32:46 +0000 | [diff] [blame] | 128 | * Add an option that prevents cURL from overwiting existing local files. When |
| 129 | used, and there already is an existing file with the target file name |
| 130 | (either -O or -o), a number should be appended (and increased if already |
| 131 | existing). So that index.html becomes first index.html.1 and then |
| 132 | index.html.2 etc. Jeff Pohlmeyer suggested. |
| 133 | |
| Daniel Stenberg | 3e049a9 | 2001-11-13 09:06:32 +0000 | [diff] [blame] | 134 | * "curl ftp://site.com/*.txt" |
| Daniel Stenberg | e60e741 | 2001-11-02 12:51:18 +0000 | [diff] [blame] | 135 | |
| Daniel Stenberg | d095b20 | 2003-10-17 12:37:15 +0000 | [diff] [blame] | 136 | * The client could be told to use maximum N simultaneous transfers and then |
| 137 | just make sure that happens. It should of course not make more than one |
| 138 | connection to the same remote host. This would require the client to use |
| 139 | the multi interface. |
| Daniel Stenberg | d12fd89 | 2001-12-06 14:40:16 +0000 | [diff] [blame] | 140 | |
| Daniel Stenberg | 5c4b422 | 2002-02-18 10:51:28 +0000 | [diff] [blame] | 141 | * Extending the capabilities of the multipart formposting. How about leaving |
| 142 | the ';type=foo' syntax as it is and adding an extra tag (headers) which |
| 143 | works like this: curl -F "coolfiles=@fil1.txt;headers=@fil1.hdr" where |
| 144 | fil1.hdr contains extra headers like |
| 145 | |
| 146 | Content-Type: text/plain; charset=KOI8-R" |
| 147 | Content-Transfer-Encoding: base64 |
| 148 | X-User-Comment: Please don't use browser specific HTML code |
| 149 | |
| 150 | which should overwrite the program reasonable defaults (plain/text, |
| 151 | 8bit...) (Idea brough to us by kromJx) |
| 152 | |
| Daniel Stenberg | 4c3a231 | 2004-01-09 08:59:55 +0000 | [diff] [blame] | 153 | * ability to specify the classic computing suffixes on the range |
| 154 | specifications. For example, to download the first 500 Kilobytes of a file, |
| 155 | be able to specify the following for the -r option: "-r 0-500K" or for the |
| 156 | first 2 Megabytes of a file: "-r 0-2M". (Mark Smith suggested) |
| 157 | |
| Daniel Stenberg | 391a37e | 2003-12-08 13:48:23 +0000 | [diff] [blame] | 158 | * --data-encode that URL encodes the data before posting |
| 159 | http://curl.haxx.se/mail/archive-2003-11/0091.html (Kevin Roth suggested) |
| 160 | |
| Daniel Stenberg | 7cb10a1 | 2004-03-02 10:08:04 +0000 | [diff] [blame^] | 161 | BUILD |
| 162 | |
| 163 | * Consider extending 'roffit' to produce decent ASCII output, and use that |
| 164 | instead of (g)nroff when building src/hugehelp.c |
| 165 | |
| Daniel Stenberg | e60e741 | 2001-11-02 12:51:18 +0000 | [diff] [blame] | 166 | TEST SUITE |
| 167 | |
| Daniel Stenberg | 7cb10a1 | 2004-03-02 10:08:04 +0000 | [diff] [blame^] | 168 | * Make the test servers able to serve multiple running test suites. Like if |
| 169 | two users run 'make test' at once. |
| 170 | |
| 171 | * Make runtests.pl capable of changing port numbers for the servers. This was |
| 172 | the intention from the start, but in practise it is now hard. |
| 173 | |
| Daniel Stenberg | 96b7131 | 2003-03-15 15:08:55 +0000 | [diff] [blame] | 174 | * If perl wasn't found by the configure script, don't attempt to run the |
| 175 | tests but explain something nice why it doesn't. |
| 176 | |
| Daniel Stenberg | e60e741 | 2001-11-02 12:51:18 +0000 | [diff] [blame] | 177 | * Extend the test suite to include more protocols. The telnet could just do |
| 178 | ftp or http operations (for which we have test servers). |
| 179 | |
| 180 | * Make the test suite work on more platforms. OpenBSD and Mac OS. Remove |
| 181 | fork()s and it should become even more portable. |
| 182 | |
| Daniel Stenberg | 7cb10a1 | 2004-03-02 10:08:04 +0000 | [diff] [blame^] | 183 | NEXT MAJOR RELEASE |
| Daniel Stenberg | 83a4638 | 2003-03-10 20:46:54 +0000 | [diff] [blame] | 184 | |
| 185 | * curl_easy_cleanup() returns void, but curl_multi_cleanup() returns a |
| 186 | CURLMcode. These should be changed to be the same. |
| 187 | |
| 188 | * curl_formparse() should be removed |
| Daniel Stenberg | 7cb10a1 | 2004-03-02 10:08:04 +0000 | [diff] [blame^] | 189 | |
| 190 | * remove obsolete defines from curl/curl.h |
| 191 | |
| 192 | * remove the following functions from the public API: |
| 193 | curl_getenv |
| 194 | curl_mprintf (and variations) |
| 195 | curl_strequal |
| 196 | curl_strnequal |
| 197 | |
| 198 | They will instead become curlx_ - alternatives. That makes the curl app |
| 199 | still capable of building with them from source. |