Skip to content

curl 8.16 breaks http2 transfers with writefunc pausing #19334

@pennae

Description

@pennae

I did this

the Lix transfer code uses curl with http2 at very high concurrency for transfers. with the curl 8.16 release we've seen transfers fail with CURLE_WRITE_ERROR when using http2 as the transport. we've bisected this to fa9151b: with this patch applied our code sees transfers die with write errors when they try to pause themselves. using the commit prior to fa9151b resolves the issue, not pausing any transfers also resolves the issue. curl 8.15 and earlier work fine.

we haven't managed to extract a reliable reproducer from our code. the only reliable reproducer we have so far is to download many things concurrently under rr chaos mode. since it's related to pausing of transfers we'd guess that it's caused by the refactor returning CURLE_AGAIN internally rather than the previous CURLE_OK when transfers are paused, but we haven't verified that.

I expected the following

transfers to not die with write errors when paused

curl/libcurl version

curl 8.16.0, or anything past fa9151b

operating system

NixOS unstable

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions