curl/docs
Stefan Eissing 9369c30cd8
lib: Curl_read/Curl_write clarifications
- replace `Curl_read()`, `Curl_write()` and `Curl_nwrite()` to
  clarify when and at what level they operate
- send/recv of transfer related data is now done via
  `Curl_xfer_send()/Curl_xfer_recv()` which no longer has
  socket/socketindex as parameter. It decides on the transfer
  setup of `conn->sockfd` and `conn->writesockfd` on which
  connection filter chain to operate.
- send/recv on a specific connection filter chain is done via
  `Curl_conn_send()/Curl_conn_recv()` which get the socket index
  as parameter.
- rename `Curl_setup_transfer()` to `Curl_xfer_setup()` for
  naming consistency
- clarify that the special CURLE_AGAIN hangling to return
  `CURLE_OK` with length 0 only applies to `Curl_xfer_send()`
  and CURLE_AGAIN is returned by all other send() variants.
- fix a bug in websocket `curl_ws_recv()` that mixed up data
  when it arrived in more than a single chunk (to be made
  into a sperate PR, also)

Added as documented [in
CLIENT-READER.md](5b1f31dfba/docs/CLIENT-READERS.md).

- old `Curl_buffer_send()` completely replaced by new `Curl_req_send()`
- old `Curl_fillreadbuffer()` replaced with `Curl_client_read()`
- HTTP chunked uploads are now formatted in a client reader added when
  needed.
- FTP line-end conversions are done in a client reader added when
  needed.
- when sending requests headers, remaining buffer space is filled with
  body data for sending in "one go". This is independent of the request
  body size. Resolves #12938 as now small and large requests have the
  same code path.

Changes done to test cases:

- test513: now fails before sending request headers as this initial
  "client read" triggers the setup fault. Behaves now the same as in
  hyper build
- test547, test555, test1620: fix the length check in the lib code to
  only fail for reads *smaller* than expected. This was a bug in the
  test code that never triggered in the old implementation.

Closes #12969
2024-02-28 12:58:55 +01:00
..
cmdline-opts docs: more language cleanups 2024-02-27 16:19:43 +01:00
examples examples: use present tense in comments 2024-02-27 16:19:43 +01:00
libcurl curldown: Fix email address in Copyright 2024-02-28 11:28:10 +01:00
.gitignore docs: introduce "curldown" for libcurl man page format 2024-01-23 00:29:02 +01:00
ALTSVC.md ALTSVC.md: correct a typo 2024-02-05 22:26:14 +01:00
BINDINGS.md BINDINGS: add mcurl, the python binding 2024-02-19 17:01:00 +01:00
BUFQ.md docs: use present tense 2024-02-27 09:47:21 +01:00
BUFREF.md docs: use present tense 2024-02-27 09:47:21 +01:00
BUG-BOUNTY.md docs: use present tense 2024-02-27 09:47:21 +01:00
BUGS.md docs: use present tense 2024-02-27 09:47:21 +01:00
CHECKSRC.md docs: use present tense 2024-02-27 09:47:21 +01:00
CIPHERS.md docs: use present tense 2024-02-27 09:47:21 +01:00
CLIENT-READERS.md lib: Curl_read/Curl_write clarifications 2024-02-28 12:58:55 +01:00
CLIENT-WRITERS.md docs: use present tense 2024-02-27 09:47:21 +01:00
CMakeLists.txt cmake: rework options to enable curl and libcurl docs 2024-01-24 23:22:27 +00:00
CODE_OF_CONDUCT.md
CODE_REVIEW.md
CODE_STYLE.md docs: use present tense 2024-02-27 09:47:21 +01:00
CONNECTION-FILTERS.md docs: use present tense 2024-02-27 09:47:21 +01:00
CONTRIBUTE.md docs: use present tense 2024-02-27 09:47:21 +01:00
curl-config.md curldown: Fix email address in Copyright 2024-02-28 11:28:10 +01:00
CURL-DISABLE.md
CURLDOWN.md curldown: Fix email address in Copyright 2024-02-28 11:28:10 +01:00
DEPRECATE.md docs: use present tense 2024-02-27 09:47:21 +01:00
DYNBUF.md docs: use present tense 2024-02-27 09:47:21 +01:00
EARLY-RELEASE.md docs: use present tense 2024-02-27 09:47:21 +01:00
EXPERIMENTAL.md docs: use present tense 2024-02-27 09:47:21 +01:00
FAQ
FEATURES.md badwords: use hostname, not host name 2024-02-07 08:25:52 +01:00
GOVERNANCE.md docs: use present tense 2024-02-27 09:47:21 +01:00
HELP-US.md docs: use present tense 2024-02-27 09:47:21 +01:00
HISTORY.md docs: introduce "curldown" for libcurl man page format 2024-01-23 00:29:02 +01:00
HSTS.md docs: use present tense 2024-02-27 09:47:21 +01:00
HTTP2.md docs: use present tense 2024-02-27 09:47:21 +01:00
HTTP3.md docs: more language cleanups 2024-02-27 16:19:43 +01:00
HTTP-COOKIES.md docs: use present tense 2024-02-27 09:47:21 +01:00
HYPER.md docs: use present tense 2024-02-27 09:47:21 +01:00
INSTALL
INSTALL-CMAKE.md docs: use present tense 2024-02-27 09:47:21 +01:00
INSTALL.md docs: use present tense 2024-02-27 09:47:21 +01:00
INTERNALS.md
IPFS.md docs: use present tense 2024-02-27 09:47:21 +01:00
KNOWN_BUGS KNOWN_BUGS: IMAPS connection fails with rustls error 2024-02-27 17:50:25 +01:00
MAIL-ETIQUETTE docs: more language cleanups 2024-02-27 16:19:43 +01:00
Makefile.am lib: Curl_read/Curl_write clarifications 2024-02-28 12:58:55 +01:00
MANUAL.md docs: use present tense 2024-02-27 09:47:21 +01:00
mk-ca-bundle.md curldown: Fix email address in Copyright 2024-02-28 11:28:10 +01:00
MQTT.md docs: use present tense 2024-02-27 09:47:21 +01:00
NEW-PROTOCOL.md docs: use present tense 2024-02-27 09:47:21 +01:00
options-in-versions
PARALLEL-TRANSFERS.md docs: use present tense 2024-02-27 09:47:21 +01:00
README.md docs: use present tense 2024-02-27 09:47:21 +01:00
RELEASE-PROCEDURE.md docs: use present tense 2024-02-27 09:47:21 +01:00
ROADMAP.md
RUSTLS.md rustls: make curl compile with 0.12.0 2024-02-26 08:59:43 +01:00
SECURITY-ADVISORY.md docs: use present tense 2024-02-27 09:47:21 +01:00
SSL-PROBLEMS.md docs: use present tense 2024-02-27 09:47:21 +01:00
SSLCERTS.md docs: more language cleanups 2024-02-27 16:19:43 +01:00
THANKS THANKS: add bug reporter from #740 2024-02-23 10:13:03 +01:00
THANKS-filter
TheArtOfHttpScripting.md docs: use present tense 2024-02-27 09:47:21 +01:00
TODO TODO: build HTTP/3 with OpenSSL and nghttp3 using cmake 2024-02-27 17:43:22 +01:00
URL-SYNTAX.md docs: use present tense 2024-02-27 09:47:21 +01:00
VERSIONS.md docs: use present tense 2024-02-27 09:47:21 +01:00
VULN-DISCLOSURE-POLICY.md docs: use present tense 2024-02-27 09:47:21 +01:00
WEBSOCKET.md docs: use present tense 2024-02-27 09:47:21 +01: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.