---
name: "CURLOPT_STREAM_DEPENDS_E"
section: "3"
platform: "linux"
package: "curl"
version: "8.23.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/CURLOPT_STREAM_DEPENDS_E"
---

# CURLOPT\_STREAM\_DEPENDS\_E(3)

stream this transfer depends on exclusively

## NAME

CURLOPT\_STREAM\_DEPENDS\_E - stream this transfer depends on exclusively

## SYNOPSIS

```
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS_E,
                          CURL *dephandle);
```

## DESCRIPTION

Pass a *CURL* pointer in *dephandle* to identify the stream within the same connection that this stream is depending upon exclusively. That means it depends on it and sets the Exclusive bit.

The spec says "Including a dependency expresses a preference to allocate resources to the identified stream rather than to the dependent stream."

Setting a dependency with the exclusive flag for a reprioritized stream causes all the dependencies of the new parent stream to become dependent on the reprioritized stream.

This option can be set during transfer.

*dephandle* must not be the same as *handle*, that makes this function return an error. It must be another easy handle, and it also needs to be a handle of a transfer that is about to be sent over the same HTTP/2 connection for this option to have an actual effect.

Since version 8.21.0 setting this option no longer has an effect. HTTP/2 stream dependencies were introduced in RFC 7540 and then later deprecated in RFC 9113.

## DEFAULT

NULL

## PROTOCOLS

This functionality affects http only

## EXAMPLE

```
int main(void)
{
  CURL *curl = curl_easy_init();
  CURL *curl2 = curl_easy_init(); /* a second handle */
  if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/one");
    /* the second depends on the first */
    curl_easy_setopt(curl2, CURLOPT_URL, "https://example.com/two");
    curl_easy_setopt(curl2, CURLOPT_STREAM_DEPENDS_E, curl);
    /* then add both to a multi handle and transfer them */
  }
}
```

## DEPRECATED

Deprecated since 8.21.0.

## AVAILABILITY

Added in curl 7.46.0

## RETURN VALUE

*[curl\_easy\_setopt(3)](/curl_easy_setopt/3.md)* returns a CURLcode indicating success or error.

CURLE\_OK (0) means everything was OK, non-zero means an error occurred, see *[libcurl-errors(3)](/libcurl-errors/3.md)*.

## SEE ALSO

[**CURLMOPT\_PIPELINING**(3)](/CURLMOPT_PIPELINING/3.md), [**CURLOPT\_HTTP\_VERSION**(3)](/CURLOPT_HTTP_VERSION/3.md), [**CURLOPT\_STREAM\_DEPENDS**(3)](/CURLOPT_STREAM_DEPENDS/3.md), [**CURLOPT\_STREAM\_WEIGHT**(3)](/CURLOPT_STREAM_WEIGHT/3.md)
