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