Commit ebce0a16 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

more blurb

parent df546bd5
Loading
Loading
Loading
Loading
+41 −0
Original line number Diff line number Diff line
@@ -289,6 +289,40 @@ Persistent Connections
 You do realize that the curl handle must be re-used in order for the
 persistent connections to work.

multi interface/non-blocking
============================

 We make an effort to provide a non-blocking interface to the library, the
 multi interface. To make that interface work as good as possible, no
 low-level functions within libcurl must be written to work in a blocking
 manner.

 One of the primary reasons we introduced c-ares support was to allow the name
 resolve phase to be perfectly non-blocking as well.

 The ultimate goal is to provide the easy interface simply by wrapping the
 multi interface functions and thus treat everything internally as the multi
 interface is the single interface we have.

 The FTP and the SFTP/SCP protocols are thus perfect examples of how we adapt
 and adjust the code to allow non-blocking operations even on multi-stage
 protocols. The DICT, TELNET and TFTP are crappy examples and they are subject
 for rewrite in the future to better fit the libcurl protocol family.

SSL libraries
=============

 Originally libcurl supported SSLeay for SSL/TLS transports, but that was then
 extended to its successor OpenSSL but has since also been extended to several
 other SSL/TLS libraries and we expect and hope to further extend the support
 in future libcurl versions.

 To deal with this internally in the best way possible, we have a generic SSL
 function API as provided by the sslgen.[ch] system, and they are the only SSL
 functions we must use from within libcurl. sslgen is then crafted to use the
 appropriate lower-level function calls to whatever SSL library that is in
 use.

Library Symbols
===============
 
@@ -312,6 +346,13 @@ Return Codes and Informationals
 them. They are best used when revealing information that isn't otherwise
 obvious.

API/ABI
=======

 We make an effort to not export or show internals or how internals work, as
 that makes it easier to keep a solid API/ABI over time. See docs/libcurl/ABI
 for our promise to users.

Client
======