curl / Mailing Lists / curl-library / Single Mail
Buy commercial curl support from WolfSSL. We help you work out your issues, debug your libcurl applications, use the API, port to new platforms, add new features and more. With a team lead by the curl founder himself.

Re: HTTP/2 deferring DATA frame to another TCP packet

From: Pontakorn Prasertsuk via curl-library <>
Date: Wed, 21 Jun 2023 17:02:44 +0800

I tried running `SSLKEYLOGFILE=/tmp/sslkeylog.log src/curl --location "
https://localhost:8000" --insecure --http2 --data "1234567890" -H
"Content-type: text/plain" -v --no-tcp-nodelay`

The packet capture still shows the DATA frame separated from the HEADER
frame. The packet with (text/plain) is the body of the POST request:

[image: curl_no_tcp_nodelay.png]


On Wed, Jun 21, 2023 at 4:11 PM Daniel Stenberg <> wrote:

> On Wed, 21 Jun 2023, Pontakorn Prasertsuk via curl-library wrote:
> > I have a POST body with length 10. The header `Content-length: 10` is
> > present in the HEADER frame of my request. Referring to the image, the
> > body is in the third packet after the HEADER packet (with SETTINGS
> packet
> > from server and ACK packet from the client in between). It should be
> > possible to fit the DATA frame into the first packet with the HEADER
> frame
> > but I cannot find a way to do it in libcurl.
> Maybe switching off TCP_NODELAY ?
> See this issue from a few years ago:
> --
> /
> | Commercial curl support up to 24x7 is available!
> | Private help, bug fixes, support, ports, new features
> |


(image/png attachment: curl_no_tcp_nodelay.png)

Received on 2023-06-21