xref: /aosp_15_r20/external/curl/docs/libcurl/opts/CURLMOPT_PIPELINING.md (revision 6236dae45794135f37c4eb022389c904c8b0090d)
1*6236dae4SAndroid Build Coastguard Worker---
2*6236dae4SAndroid Build Coastguard Workerc: Copyright (C) Daniel Stenberg, <[email protected]>, et al.
3*6236dae4SAndroid Build Coastguard WorkerSPDX-License-Identifier: curl
4*6236dae4SAndroid Build Coastguard WorkerTitle: CURLMOPT_PIPELINING
5*6236dae4SAndroid Build Coastguard WorkerSection: 3
6*6236dae4SAndroid Build Coastguard WorkerSource: libcurl
7*6236dae4SAndroid Build Coastguard WorkerSee-also:
8*6236dae4SAndroid Build Coastguard Worker  - CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE (3)
9*6236dae4SAndroid Build Coastguard Worker  - CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE (3)
10*6236dae4SAndroid Build Coastguard Worker  - CURLMOPT_MAXCONNECTS (3)
11*6236dae4SAndroid Build Coastguard Worker  - CURLMOPT_MAX_HOST_CONNECTIONS (3)
12*6236dae4SAndroid Build Coastguard Worker  - CURLMOPT_MAX_PIPELINE_LENGTH (3)
13*6236dae4SAndroid Build Coastguard Worker  - CURLMOPT_PIPELINING_SITE_BL (3)
14*6236dae4SAndroid Build Coastguard WorkerProtocol:
15*6236dae4SAndroid Build Coastguard Worker  - HTTP
16*6236dae4SAndroid Build Coastguard WorkerAdded-in: 7.16.0
17*6236dae4SAndroid Build Coastguard Worker---
18*6236dae4SAndroid Build Coastguard Worker
19*6236dae4SAndroid Build Coastguard Worker# NAME
20*6236dae4SAndroid Build Coastguard Worker
21*6236dae4SAndroid Build Coastguard WorkerCURLMOPT_PIPELINING - enable HTTP multiplexing
22*6236dae4SAndroid Build Coastguard Worker
23*6236dae4SAndroid Build Coastguard Worker# SYNOPSIS
24*6236dae4SAndroid Build Coastguard Worker
25*6236dae4SAndroid Build Coastguard Worker~~~c
26*6236dae4SAndroid Build Coastguard Worker#include <curl/curl.h>
27*6236dae4SAndroid Build Coastguard Worker
28*6236dae4SAndroid Build Coastguard WorkerCURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING, long bitmask);
29*6236dae4SAndroid Build Coastguard Worker~~~
30*6236dae4SAndroid Build Coastguard Worker
31*6236dae4SAndroid Build Coastguard Worker# DESCRIPTION
32*6236dae4SAndroid Build Coastguard Worker
33*6236dae4SAndroid Build Coastguard WorkerPass in the correct value in the **bitmask** parameter to instruct libcurl to
34*6236dae4SAndroid Build Coastguard Workerenable multiplexing for this multi handle.
35*6236dae4SAndroid Build Coastguard Worker
36*6236dae4SAndroid Build Coastguard WorkerWith multiplexing enabled, libcurl attempts to do multiple transfers over the
37*6236dae4SAndroid Build Coastguard Workersame connection when doing parallel transfers to the same hosts.
38*6236dae4SAndroid Build Coastguard Worker
39*6236dae4SAndroid Build Coastguard Worker## CURLPIPE_NOTHING (0)
40*6236dae4SAndroid Build Coastguard Worker
41*6236dae4SAndroid Build Coastguard WorkerMake no attempts at multiplexing.
42*6236dae4SAndroid Build Coastguard Worker
43*6236dae4SAndroid Build Coastguard Worker## CURLPIPE_HTTP1 (1)
44*6236dae4SAndroid Build Coastguard Worker
45*6236dae4SAndroid Build Coastguard WorkerThis bit is deprecated and has no effect since version 7.62.0.
46*6236dae4SAndroid Build Coastguard Worker
47*6236dae4SAndroid Build Coastguard Worker## CURLPIPE_MULTIPLEX (2)
48*6236dae4SAndroid Build Coastguard Worker
49*6236dae4SAndroid Build Coastguard WorkerIf this bit is set, libcurl tries to multiplex the new transfer over an
50*6236dae4SAndroid Build Coastguard Workerexisting connection if possible. This requires HTTP/2 or HTTP/3.
51*6236dae4SAndroid Build Coastguard Worker
52*6236dae4SAndroid Build Coastguard Worker# DEFAULT
53*6236dae4SAndroid Build Coastguard Worker
54*6236dae4SAndroid Build Coastguard Worker**CURLPIPE_MULTIPLEX**
55*6236dae4SAndroid Build Coastguard Worker
56*6236dae4SAndroid Build Coastguard Worker# %PROTOCOLS%
57*6236dae4SAndroid Build Coastguard Worker
58*6236dae4SAndroid Build Coastguard Worker# EXAMPLE
59*6236dae4SAndroid Build Coastguard Worker
60*6236dae4SAndroid Build Coastguard Worker~~~c
61*6236dae4SAndroid Build Coastguard Workerint main(void)
62*6236dae4SAndroid Build Coastguard Worker{
63*6236dae4SAndroid Build Coastguard Worker  CURLM *m = curl_multi_init();
64*6236dae4SAndroid Build Coastguard Worker  /* try HTTP/2 multiplexing */
65*6236dae4SAndroid Build Coastguard Worker  curl_multi_setopt(m, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
66*6236dae4SAndroid Build Coastguard Worker}
67*6236dae4SAndroid Build Coastguard Worker~~~
68*6236dae4SAndroid Build Coastguard Worker
69*6236dae4SAndroid Build Coastguard Worker# HISTORY
70*6236dae4SAndroid Build Coastguard Worker
71*6236dae4SAndroid Build Coastguard WorkerThe multiplex support bit was added in 7.43.0. HTTP/1 Pipelining support was
72*6236dae4SAndroid Build Coastguard Workerdisabled in 7.62.0.
73*6236dae4SAndroid Build Coastguard Worker
74*6236dae4SAndroid Build Coastguard WorkerSince 7.62.0, **CURLPIPE_MULTIPLEX** is enabled by default.
75*6236dae4SAndroid Build Coastguard Worker
76*6236dae4SAndroid Build Coastguard WorkerBefore that, default was **CURLPIPE_NOTHING**.
77*6236dae4SAndroid Build Coastguard Worker
78*6236dae4SAndroid Build Coastguard Worker# %AVAILABILITY%
79*6236dae4SAndroid Build Coastguard Worker
80*6236dae4SAndroid Build Coastguard Worker# RETURN VALUE
81*6236dae4SAndroid Build Coastguard Worker
82*6236dae4SAndroid Build Coastguard WorkerReturns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
83