Skip to content

remove stream dependency tracking#21723

Closed
icing wants to merge 1 commit into
curl:masterfrom
icing:rm-prio-dependencies
Closed

remove stream dependency tracking#21723
icing wants to merge 1 commit into
curl:masterfrom
icing:rm-prio-dependencies

Conversation

@icing
Copy link
Copy Markdown
Contributor

@icing icing commented May 22, 2026

The HTTP/2 feature is deprecated, few servers implement it and our implementation is complicated by its state management. Make the two CURLOPT_* involved a nop and deprecate them.

The HTTP/2 feature is deprecated, few servers implement it and our
implementation is complicated by its state management. Make the two
CURLOPT_* involved a nop and deprecate them.
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR removes libcurl’s internal HTTP/2 stream dependency tracking (dependency trees / exclusive flags) and turns the two related easy options into deprecated no-ops, reducing nghttp2-related state management complexity while keeping backward compatibility.

Changes:

  • Removed internal per-easy-handle dependency tree bookkeeping and related cleanup logic.
  • Updated nghttp2 PRIORITY specification generation to only apply stream weight (no dependencies/exclusive).
  • Deprecated CURLOPT_STREAM_DEPENDS / CURLOPT_STREAM_DEPENDS_E in the public API and updated versioned symbols + option docs accordingly.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
lib/urldata.h Removes dependency-tree fields from struct Curl_data_priority.
lib/url.c Drops dependency-tree manipulation helpers and close-time cleanup.
lib/setopt.c Makes CURLOPT_STREAM_DEPENDS{,_E} accepted no-ops under USE_HTTP2.
lib/http2.c Stops emitting dependency/exclusive changes; always builds PRIORITY with no dependency.
include/curl/curl.h Marks both options deprecated via CURLOPTDEPRECATED(..., 8.21.0, "Has no function").
docs/libcurl/symbols-in-versions Records deprecation version for both symbols.
docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.md Notes “no effect since 8.21.0” and adds a DEPRECATED section.
docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.md Notes “no effect since 8.21.0” and adds a DEPRECATED section.
docs/libcurl/curl_easy_setopt.md Flags both options as deprecated in the option index.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.md
Comment thread docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.md
@bagder bagder closed this in bfbff78 May 22, 2026
outcast36 pushed a commit to greearb/curl that referenced this pull request Jun 3, 2026
The HTTP/2 feature is deprecated, few servers implement it and our
implementation is complicated by its state management. Make the two
CURLOPT_* involved a nop and deprecate them.

Closes curl#21723
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

3 participants