From 0ddc59be0a565470708c2b1411fb4480f4969b74 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Fri, 20 Nov 2015 08:39:59 +0100 Subject: TODO: added two more libcurl ideas Moved some ideas from "next major" to just ordinary ideas since we can always add new things while keeping the old without doing a "next major". --- docs/TODO | 83 +++++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 54 insertions(+), 29 deletions(-) (limited to 'docs') diff --git a/docs/TODO b/docs/TODO index 9f8f8bfc5..2dfe7353c 100644 --- a/docs/TODO +++ b/docs/TODO @@ -27,11 +27,14 @@ 1.9 Cache negative name resolves 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() 2. libcurl - multi interface 2.1 More non-blocking - 2.2 Fix HTTP Pipelining for PUT - 2.3 Better support for same name resolves + 2.2 Better support for same name resolves + 2.3 Non-blocking curl_multi_remove_handle() 3. Documentation 3.1 Update date and version in man pages @@ -142,7 +145,6 @@ 21.7 remove progress meter from libcurl 21.8 remove 'curl_httppost' from public 21.9 have form functions use CURL handle argument - 21.10 Add CURLOPT_MAIL_CLIENT option ============================================================================== @@ -236,6 +238,45 @@ app/invoke/used protocols would be necessary to load. See https://github.com/bagder/curl/issues/349 +1.12 have form functions use CURL handle argument + + curl_formadd() and curl_formget() both currently have no CURL handle + argument, but both can use a callback that is set in the easy handle, and + thus curl_formget() with callback cannot function without first having + curl_easy_perform() (or similar) called - which is hard to grasp and a design + mistake. + + The curl_formadd() design can probably also be reconsidered to make it easier + to use and less error-prone. Probably easiest by splitting it into several + function calls. + +1.13 Add CURLOPT_MAIL_CLIENT option + + Rather than use the URL to specify the mail client string to present in the + HELO and EHLO commands, libcurl should support a new CURLOPT specifically for + specifying this data as the URL is non-standard and to be honest a bit of a + hack ;-) + + Please see the following thread for more information: + http://curl.haxx.se/mail/lib-2012-05/0178.html + +1.14 Typesafe curl_easy_setopt() + + One of the most common problems in libcurl using applications is the lack of + type checks for curl_easy_setopt() which happens because it accepts varargs + and thus can take any type. + + One possible solution to this is to introduce a few different versions of the + setopt version for the different kinds of data you can set. + + curl_easy_set_num() - sets a long value + + curl_easy_set_large() - sets a curl_off_t value + + curl_easy_set_ptr() - sets a pointer + + curl_easy_set_cb() - sets a callback PLUS its callback data + 2. libcurl - multi interface 2.1 More non-blocking @@ -252,13 +293,7 @@ - The "DONE" operation (post transfer protocol-specific actions) for the protocols SFTP, SMTP, FTP. Fixing Curl_done() for this is a worthy task. -2.2 Fix HTTP Pipelining for PUT - - HTTP Pipelining can be a way to greatly enhance performance for multiple - serial requests and currently libcurl only supports that for HEAD and GET - requests but it should also be possible for PUT. - -2.3 Better support for same name resolves +2.2 Better support for same name resolves If a name resolve has been initiated for name NN and a second easy handle wants to resolve that name as well, make it wait for the first resolve to end @@ -266,6 +301,15 @@ especially needed when adding many simultaneous handles using the same host name when the DNS resolver can get flooded. +2.3 Non-blocking curl_multi_remove_handle() + + The multi interface has a few API calls that assume a blocking behavior, like + add_handle() and remove_handle() which limits what we can do internally. The + multi API need to be moved even more into a single function that "drives" + everything in a non-blocking manner and signals when something is done. A + remove or add would then only ask for the action to get started and then + multi_perform() etc still be called until the add/remove is completed. + 3. Documentation @@ -815,22 +859,3 @@ Currently the SMB authentication uses NTLMv1. Changing them to return a private handle will benefit the implementation and allow us much greater freedoms while still maintaining a solid API and ABI. - -21.9 have form functions use CURL handle argument - - curl_formadd() and curl_formget() both currently have no CURL handle - argument, but both can use a callback that is set in the easy handle, and - thus curl_formget() with callback cannot function without first having - curl_easy_perform() (or similar) called - which is hard to grasp and a design - mistake. - -21.10 Add CURLOPT_MAIL_CLIENT option - - Rather than use the URL to specify the mail client string to present in the - HELO and EHLO commands, libcurl should support a new CURLOPT specifically for - specifying this data as the URL is non-standard and to be honest a bit of a - hack ;-) - - Please see the following thread for more information: - http://curl.haxx.se/mail/lib-2012-05/0178.html - -- cgit v1.2.3