1---
2c: Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
3SPDX-License-Identifier: curl
4Title: CURLOPT_STREAM_DEPENDS_E
5Section: 3
6Source: libcurl
7See-also:
8  - CURLMOPT_PIPELINING (3)
9  - CURLOPT_HTTP_VERSION (3)
10  - CURLOPT_STREAM_DEPENDS (3)
11  - CURLOPT_STREAM_WEIGHT (3)
12Protocol:
13  - HTTP
14Added-in: 7.46.0
15---
16
17# NAME
18
19CURLOPT_STREAM_DEPENDS_E - stream this transfer depends on exclusively
20
21# SYNOPSIS
22
23~~~c
24#include <curl/curl.h>
25
26CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS_E,
27                          CURL *dephandle);
28~~~
29
30# DESCRIPTION
31
32Pass a CURL pointer in *dephandle* to identify the stream within the same
33connection that this stream is depending upon exclusively. That means it
34depends on it and sets the Exclusive bit.
35
36The spec says "Including a dependency expresses a preference to allocate
37resources to the identified stream rather than to the dependent stream."
38
39Setting a dependency with the exclusive flag for a reprioritized stream causes
40all the dependencies of the new parent stream to become dependent on the
41reprioritized stream.
42
43This option can be set during transfer.
44
45*dephandle* must not be the same as *handle*, that makes this function return
46an error. It must be another easy handle, and it also needs to be a handle of
47a transfer that is about to be sent over the same HTTP/2 connection for this
48option to have an actual effect.
49
50# DEFAULT
51
52NULL
53
54# %PROTOCOLS%
55
56# EXAMPLE
57
58~~~c
59int main(void)
60{
61  CURL *curl = curl_easy_init();
62  CURL *curl2 = curl_easy_init(); /* a second handle */
63  if(curl) {
64    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/one");
65
66    /* the second depends on the first */
67    curl_easy_setopt(curl2, CURLOPT_URL, "https://example.com/two");
68    curl_easy_setopt(curl2, CURLOPT_STREAM_DEPENDS_E, curl);
69
70    /* then add both to a multi handle and transfer them! */
71  }
72}
73~~~
74
75# %AVAILABILITY%
76
77# RETURN VALUE
78
79Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
80