                                  _   _ ____  _     
                              ___| | | |  _ \| |    
                             / __| | | | |_) | |    
                            | (__| |_| |  _ <| |___ 
                             \___|\___/|_| \_\_____|

TODO

 Ok, this is what I wanna do with Curl. Please tell me what you think, and
 please don't hesitate to contribute and send me patches that improve this
 product! (Yes, you may add things not mentioned here, these are just a
 few teasers...)

 * LDAP support.

   RFC 1959 defines the URL syntax.
   RFC 1777 defines the LDAP protocol

 * HTTP Pipelining/persistant connections

 - I'm gonna introduce HTTP "pipelining". Curl should be able
   to request for several HTTP documents in one connect. It is the beginning
   for supporing more advanced functions in the future, like web site
   mirroring. This will require that the urlget() function supports several
   documents from a single HTTP server, which it doesn't today.

 - When curl supports fetching several documents from the same
   server using pipelining, I'd like to offer that function to the command
   line. Anyone has a good idea how? The current way of specifying one URL
   with the output sent to the stdout or a file gets in the way. Imagine a
   syntax that supports "additional documents from the same server" in a way
   similar to:

     curl <main URL> --more-doc <path> --more-doc <path>

   where --more-doc specifies another document on the same server. Where are
   the output files gonna be put and how should they be named? Should each
   "--more-doc" parameter require a local file name to store the result in?
   Like "--more-file" as in:

     curl <URL> --more-doc <path> --more-file <file>

 * Web mirroring

   When curl supports pipelining and "persistent connections" it is time to
   add mirroring ability. That will demand a whole lot of new command line
   switches and options. I really depend on input from users in order to make
   that work properly! What set of flags are the absolute minimum? What kind
   of weird options do the typical/expert web mirroring persons need?

 * "Content-Encoding: gzip"
   Support getting HTML pages from server, compressed with gzip!
        http://www.mozilla.org/projects/apache/gzip/
   We more or less include "Accept-encoding: gzip" in the headers and we
   may get gzip'ed pages...

 * Fully working telnet stuff
   (Only partially working at the moment, if TRY_TELNET is defined when
   compiled.)

 * RFC2069 compliance, "Digest Access Authentication"
   A valid test page seem to exist at:
    http://hopf.math.nwu.edu/testpage/digest/
   And some friendly person's server source code is available at
    http://hopf.math.nwu.edu/digestauth/index.html
   Then there's the Apache mod_digest source code too of course.
   It seems as if Netscape doesn't support this, and not many servers
   do. Although this is a lot better authentication method than the more
   common "Basic". Basic sends the password in cleartext over the network,
   this "Digest" method uses a challange-response protocol which increases
   security quite a lot.

 * FTP Upload Through Web Proxy
   I don't know any web proxies that allow CONNECT through on port 21, but
   that would be the best way to do ftp upload. All we would need to do would
   be to 'CONNECT <host>:<port> HTTP/1.0\r\n\r\n' and then do business as
   usual. I least I think so. It would be fun if someone tried this...

 * Multiple Proxies?
   Is there anyone that actually uses serial-proxies? I mean, send CONNECT to
   the first proxy to connect to the second proxy to which you send CONNECT to
   connect to the remote host (or even more iterations). And if anyone is,
   would be need to make curl support it? (Not that it would be hard, just
   confusing...)

 * IPv6 Awareness
   Where ever it would fit. I am not that into v6 yet to fully grasp what we
   would need to do, but letting the autoconf search for v6-versions of a few
   functions and then use them instead is of course the first thing to do...
   RFC 2428 "FTP Extensions for IPv6 and NATs" will be interesting. PORT
   should be replaced with EPRT for IPv6, and EPSV instead of PASV.

 * Amiga port
   Yes, I've done my share of amiga programming but now I'd like someone else
   to do the amiga port and allow this tool to be used on amiga too.

 * An automatic RPM package maker
   Please, write me a script that makes it. It'd make my day.
