CURLOPT\_STREAM\_DEPENDS\_E(3) Library Functions Manual CURLOPT\_STREAM\_DEPENDS\_E(3)

# [NAME](#NAME)

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

# [SYNOPSIS](#SYNOPSIS)

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


                          CURL *dephandle);
```

# [DESCRIPTION](#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](#DEFAULT)

NULL

# [PROTOCOLS](#PROTOCOLS)

This functionality affects http only

# [EXAMPLE](#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)

Deprecated since 8.21.0.

# [AVAILABILITY](#AVAILABILITY)

Added in curl 7.46.0

# [RETURN VALUE](#RETURN_VALUE)

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

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

# [SEE ALSO](#SEE_ALSO)

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

2026-10-14 libcurl

---

Document: CURLOPT_STREAM_DEPENDS_E(3) from curl 8.23.0-r0 (Chainguard OS)
Source: https://github.com/curl/curl.git
