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