curl-curl/.github/scripts
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
..
badwords.pl docs: use lowercase curl and libcurl 2025-01-02 17:15:54 +01:00
badwords.txt docs: use lowercase curl and libcurl 2025-01-02 17:15:54 +01:00
cleancmd.pl GHA: spellcheck curl symbols better 2025-02-27 13:15:21 +01:00
cmp-config.pl build: replace configure check with PP condition (Android <21) 2025-01-01 04:55:54 +01:00
cmp-pkg-config.sh GHA/configure-vs-cmake: check libcurl.pc/curl-config, fix issues 2024-09-21 12:08:35 +02:00
codespell-ignore.txt mbedTLS: implement CURLOPT_SSL_CIPHER_LIST option 2024-04-24 14:30:37 +02:00
distfiles.sh build: drop tool_hugehelp.c.cvs, tidy up macros, drop buildconf.bat 2025-01-26 14:22:49 +01:00
randcurl.pl GHA: run random curl command lines for N seconds in CI 2025-04-01 11:31:48 +02:00
shellcheck.sh OS400: fix shellcheck warnings in scripts 2024-04-11 07:48:51 +00:00
spacecheck.pl scripts: drop unused import, formatting 2025-04-16 23:07:32 +02:00
spellcheck.curl GHA: spellcheck curl symbols better 2025-02-27 13:15:21 +01:00
spellcheck.words multi: do transfer book keeping using mid 2025-04-17 17:28:38 +02:00
spellcheck.yaml docs: update CIPHERS.md 2024-08-12 23:35:56 +02:00
trimmarkdownheader.pl GHA: trim markdown headers before proselinting 2024-08-22 23:45:40 +02:00
verify-examples.pl docs/libcurl: make examples build with picky compiler options 2025-04-11 15:23:51 +02:00
verify-synopsis.pl verify-synopsis.pl: work with .md files 2024-06-27 12:45:06 +02:00
yamlcheck.sh GHA: add yamlcheck 2024-08-23 18:42:55 +02:00
yamlcheck.yaml GHA: add yamlcheck 2024-08-23 18:42:55 +02:00