curl/docs
Stefan Eissing 909af1a43b
multi: do transfer book keeping using mid
Change multi's book keeping of transfers to no longer use lists, but a
special table and bitsets for unsigned int values.

`multi-xfers` is the `uint_tbl` where `multi_add_handle()` inserts a new
transfer which assigns it a unique identifier `mid`. Use bitsets to keep
track of transfers that are in state "process" or "pending" or
"msgsent".

Use sparse bitsets to replace `conn->easyq` and event handlings tracking
of transfers per socket. Instead of pointers, keep the mids involved.

Provide base data structures and document them in docs/internal:
* `uint_tbl`: a table of transfers with `mid` as lookup key,
   handing out a mid for adds between 0 - capacity.
* `uint_bset`: a bitset keeping unsigned ints from 0 - capacity.
* `uint_spbset`: a sparse bitset for keeping a small number of
  unsigned int values
* `uint_hash`: for associating `mid`s with a pointer.

This makes the `mid` the recommended way to refer to transfers inside
the same multi without risk of running into a UAF.

Modifying table and bitsets is safe while iterating over them. Overall
memory requirements are lower as with the double linked list apprach.

Closes #16761
2025-04-17 17:28:38 +02:00
..
cmdline-opts VERSIONS: list all past releases 2025-04-03 08:26:33 +02:00
examples core: stop redefining E* macros on Windows, map EACCES, related fixes 2025-03-13 00:03:25 +01:00
internals multi: do transfer book keeping using mid 2025-04-17 17:28:38 +02:00
libcurl tests/server/dnsd: basic DNS server for test suite 2025-04-17 09:13:24 +02:00
.gitignore docs: add RELEASE-TOOLS.md.dist to .gitignore 2024-07-01 22:49:55 +02:00
ALTSVC.md docs: bring back ALTSVC.md and HSTS.md 2024-12-09 09:32:19 +01:00
BINDINGS.md BINDINGS: add zig binding 2024-08-07 14:51:09 +02:00
BUG-BOUNTY.md BUG-BOUNTY.md: clarify the third party situation 2024-05-14 16:23:42 +02:00
BUGS.md docs: use lowercase curl and libcurl 2025-01-02 17:15:54 +01:00
CIPHERS-TLS12.md docs: update CIPHERS.md 2024-08-12 23:35:56 +02:00
CIPHERS.md gnutls: set priority via --ciphers 2025-03-05 13:51:56 +01:00
CMakeLists.txt cmake: do not install mk-ca-bundle script and manpage 2025-04-16 13:37:54 +02:00
CODE_OF_CONDUCT.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
CODE_REVIEW.md docs: misc language polish 2024-07-01 16:45:17 +02:00
CONTRIBUTE.md CONTRIBUTE: polished 2024-08-26 15:04:01 +02:00
curl-config.md docs: minor edits to please the new spellchecker regime 2025-02-27 13:15:21 +01:00
CURL-DISABLE.md cmake: document -D and env build options 2024-10-24 23:06:40 +02:00
CURLDOWN.md curldown: fixups 2024-07-19 17:03:25 +02:00
DEPRECATE.md cmake: deprecate winbuild, add migration guide from legacy build methods 2025-01-10 18:20:52 +01:00
DISTROS.md DISTROS: update Alt Linux links 2024-11-29 00:54:47 -08:00
EARLY-RELEASE.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
ECH.md docs: include rustls-ffi in ECH docs 2025-03-27 08:48:13 +01:00
EXPERIMENTAL.md docs/EXPERIMENTAL.md: add a mention of HTTPSRR as experimental 2025-01-16 19:41:42 +01:00
FAQ docs: suggest --ssl-reqd instead of --ftp-ssl 2024-12-02 09:07:50 +01:00
FEATURES.md FEATURES.md: fix typo 2024-08-23 08:46:09 +02:00
GOVERNANCE.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
HELP-US.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
HISTORY.md docs/HISTORY: add some events from the last year 2025-03-06 16:06:17 +01:00
HSTS.md docs: bring back ALTSVC.md and HSTS.md 2024-12-09 09:32:19 +01:00
HTTP-COOKIES.md docs/HTTP-COOKIES.md: link to more information 2025-01-01 22:45:48 +01:00
HTTP3.md vquic: ngtcp2 + openssl support 2025-04-16 22:32:07 +02:00
HTTPSRR.md docs/HTTPSRR.md: Typo fix AAA -> AAAA 2025-02-04 23:20:18 +01:00
INFRASTRUCTURE.md INFRASTRUCTURE.md: add IRC and Matrix details 2025-03-24 15:21:59 +01:00
INSTALL INSTALL: converted to markdown => INSTALL.md 2016-10-21 15:57:29 +02:00
INSTALL-CMAKE.md winbuild: add the deprecation warning to the README 2025-04-05 14:51:00 -04:00
INSTALL.md docs/INSTALL.md: drop reference to removed configure option 2025-04-11 15:25:44 +02:00
INTERNALS.md zlib: bump minimum to 1.2.5.2 (was: 1.2.0.4) 2025-03-08 00:39:04 +01:00
IPFS.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
KNOWN_BUGS KNOWN_BUGS: fix link in sivg4 issue 16.3 2025-04-10 08:29:53 +02:00
MAIL-ETIQUETTE.md GHA: silence proselint warnings and an error 2024-10-15 16:44:17 +02:00
Makefile.am multi: do transfer book keeping using mid 2025-04-17 17:28:38 +02:00
MANUAL.md docs: use valid example domain names 2025-02-09 00:17:05 +01:00
mk-ca-bundle.md curldown: make 'added-in:' a mandatory header field 2024-07-18 18:04:09 +02:00
options-in-versions VERSIONS: list all past releases 2025-04-03 08:26:33 +02:00
README.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
RELEASE-PROCEDURE.md RELEASE-PROCEDURE.md: explain release candidates 2025-03-08 10:49:46 +01:00
ROADMAP.md CI: add whitespace checker 2024-06-27 13:33:30 +02:00
RUSTLS.md docs: rework RUSTLS install instructions 2025-03-27 08:47:43 +01:00
SECURITY-ADVISORY.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
SPONSORS.md SPONSORS.md: clarify that we don't promise goods or services 2025-02-05 23:40:24 +01:00
SSL-PROBLEMS.md GHA: silence proselint warnings and an error 2024-10-15 16:44:17 +02:00
SSLCERTS.md SSLCERTS: list support for SSL_CERT_FILE and SSL_CERT_DIR 2025-03-25 08:20:39 +01:00
THANKS THANKS: new contributors from 8.13.0 release 2025-04-02 07:46:30 +02:00
THANKS-filter contributors.sh: lowercase 'github' for consistency 2025-02-24 08:05:06 +01:00
TheArtOfHttpScripting.md docs: use lowercase curl and libcurl 2025-01-02 17:15:54 +01:00
TODO IMAP: add CURLOPT_UPLOAD_FLAGS and --upload-flags 2025-03-04 15:21:16 +01:00
URL-SYNTAX.md GHA: silence proselint warnings and an error 2024-10-15 16:44:17 +02:00
VERSIONS.md VERSIONS: 8.14.0 is pending 2025-04-16 09:39:06 +02:00
VULN-DISCLOSURE-POLICY.md docs: vulnerabilities in debug code are not eligible for a bounty 2025-02-28 14:21:46 -08:00

curl logo

Documentation

You find a mix of various documentation in this directory and subdirectories, using several different formats. Some of them are not ideal for reading directly in your browser.

If you would rather see the rendered version of the documentation, check out the curl website's documentation section for general curl stuff or the libcurl section for libcurl related documentation.