curl/docs/internals
Stefan Eissing 24b36fdd15
ratelimit: redesign
Description of how this works in `docs/internal/RATELIMITS.ms`.

Notable implementation changes:
- KEEP_SEND_PAUSE/KEEP_SEND_HOLD and KEEP_RECV_PAUSE/KEEP_RECV_HOLD
  no longer exist. Pausing is down via blocked the new rlimits.
- KEEP_SEND_TIMED no longer exists. Pausing "100-continue" transfers
  is done in the new `Curl_http_perform_pollset()` method.
- HTTP/2 rate limiting implemented via window updates. When
  transfer initiaiting connection has a ratelimit, adjust the
  initial window size
- HTTP/3 ngtcp2 rate limitin implemnented via ack updates
- HTTP/3 quiche does not seem to support this via its API
- the default progress-meter has been improved for accuracy
  in "current speed" results.

pytest speed tests have been improved.

Closes #19384
2025-11-24 23:34:05 +01:00
..
BUFQ.md bufq: remove the unused Curl_bufq_unwrite function 2025-06-24 10:56:54 +02:00
BUFREF.md docs/internals: new subdirectory 2024-08-16 08:59:25 +02:00
CHECKSRC.md curlx: add and use curlx_freopen() 2025-11-19 22:04:53 +01:00
CLIENT-READERS.md spelling: 'a' vs 'an' 2025-05-30 11:38:35 +02:00
CLIENT-WRITERS.md docs/internals: new subdirectory 2024-08-16 08:59:25 +02:00
CODE_STYLE.md checksrc: reduce directory-specific exceptions 2025-10-04 00:48:58 +02:00
CONNECTION-FILTERS.md spelling: 'a' vs 'an' 2025-05-30 11:38:35 +02:00
CURLX.md curlx: move the docs to docs/internals/ 2025-05-13 10:30:02 +02:00
DYNBUF.md curlx: move into to curlx/ 2025-05-07 11:01:15 +02:00
HASH.md lib: add meta_hash to connection, eliminate hash_offt 2025-04-22 15:57:18 +02:00
LLIST.md docs: use lowercase curl and libcurl 2025-01-02 17:15:54 +01:00
MID.md multi: do transfer book keeping using mid 2025-04-17 17:28:38 +02:00
MQTT.md mqtt: send ping at upkeep interval 2025-04-16 09:36:19 +02:00
MULTI-EV.md multi: event based rework 2025-02-22 14:47:40 +01:00
NEW-PROTOCOL.md GHA: silence proselint warnings and an error 2024-10-15 16:44:17 +02:00
PORTING.md docs/internals/PORTING.md: new document 2025-03-29 14:10:10 +01:00
RATELIMITS.md ratelimit: redesign 2025-11-24 23:34:05 +01:00
README.md docs/internals: new subdirectory 2024-08-16 08:59:25 +02:00
SCORECARD.md scorecard: add perf support on linux 2025-10-14 16:24:35 +02:00
SPLAY.md internals/SPLAY.md: internal API documentation 2024-08-16 17:13:37 +02:00
STRPARSE.md spelling: call it null-terminate consistently 2025-05-30 17:29:45 +02:00
TLS-SESSIONS.md spelling: file system 2025-08-22 15:53:41 +02:00
UINT_SETS.md lib: add meta_hash to connection, eliminate hash_offt 2025-04-22 15:57:18 +02:00
WEBSOCKET.md websocket: add option to disable auto-pong reply 2025-04-19 00:01:28 +02:00

Internals

This directory contains documentation covering libcurl internals; APIs and concepts that are useful for contributors and maintainers.

Public APIs are documented in the public documentation, not here.