]> git.ipfire.org Git - thirdparty/curl.git/commit
lib: connection filters (cfilter) addition to curl:
authorStefan Eissing <stefan@eissing.org>
Fri, 11 Nov 2022 10:45:34 +0000 (11:45 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 11 Nov 2022 14:17:51 +0000 (15:17 +0100)
commitdafdb20a26d0c890e83dea61a104b75408481ebd
tree40824f46de18cb7b7b47fb06a3be624c9c06961b
parent89ee5cfb38b22f9ff68c34aa55ca2c242be90826
lib: connection filters (cfilter) addition to curl:

 - general construct/destroy in connectdata
 - default implementations of callback functions
 - connect: cfilters for connect and accept
 - socks: cfilter for socks proxying
 - http_proxy: cfilter for http proxy tunneling
 - vtls: cfilters for primary and proxy ssl
 - change in general handling of data/conn
 - Curl_cfilter_setup() sets up filter chain based on data settings,
   if none are installed by the protocol handler setup
 - Curl_cfilter_connect() boot straps filters into `connected` status,
   used by handlers and multi to reach further stages
 - Curl_cfilter_is_connected() to check if a conn is connected,
   e.g. all filters have done their work
 - Curl_cfilter_get_select_socks() gets the sockets and READ/WRITE
   indicators for multi select to work
 - Curl_cfilter_data_pending() asks filters if the have incoming
   data pending for recv
 - Curl_cfilter_recv()/Curl_cfilter_send are the general callbacks
   installed in conn->recv/conn->send for io handling
 - Curl_cfilter_attach_data()/Curl_cfilter_detach_data() inform filters
   and addition/removal of a `data` from their connection
 - adding vtl functions to prevent use of Curl_ssl globals directly
   in other parts of the code.

Reviewed-by: Daniel Stenberg
Closes #9855
49 files changed:
docs/CONNECTION-FILTERS.md [new file with mode: 0644]
docs/Makefile.am
lib/Makefile.inc
lib/cfilters.c [new file with mode: 0644]
lib/cfilters.h [new file with mode: 0644]
lib/connect.c
lib/connect.h
lib/file.c
lib/ftp.c
lib/getinfo.c
lib/gopher.c
lib/http.c
lib/http_proxy.c
lib/http_proxy.h
lib/imap.c
lib/multi.c
lib/openldap.c
lib/pingpong.c
lib/pop3.c
lib/rand.c
lib/sendf.c
lib/setopt.c
lib/smb.c
lib/smtp.c
lib/socks.c
lib/socks.h
lib/telnet.c
lib/transfer.c
lib/url.c
lib/url.h
lib/urldata.h
lib/version.c
lib/vssh/libssh.c
lib/vssh/libssh2.c
lib/vssh/wolfssh.c
lib/vtls/bearssl.c
lib/vtls/gskit.c
lib/vtls/gtls.c
lib/vtls/mbedtls.c
lib/vtls/nss.c
lib/vtls/openssl.c
lib/vtls/rustls.c
lib/vtls/schannel.c
lib/vtls/schannel_verify.c
lib/vtls/sectransp.c
lib/vtls/vtls.c
lib/vtls/vtls.h
lib/vtls/vtls_int.h [new file with mode: 0644]
lib/vtls/wolfssl.c