mirror of
https://github.com/curl/curl.git
synced 2026-06-01 22:54:17 +03:00
pipelining: removed
As previously planned and documented in DEPRECATE.md, all pipelining code is removed. Closes #3651
This commit is contained in:
parent
aba1c51553
commit
2f44e94efb
28 changed files with 190 additions and 1401 deletions
|
|
@ -5,46 +5,6 @@ email the curl-library mailing list as soon as possible and explain to us why
|
|||
this is a problem for you and how your use case can't be satisfied properly
|
||||
using a work around.
|
||||
|
||||
## HTTP pipelining
|
||||
|
||||
HTTP pipelining is badly supported by curl in the sense that we have bugs and
|
||||
it is a fragile feature without enough tests. Also, when something turns out
|
||||
to have problems it is really tricky to debug due to the timing sensitivity so
|
||||
very often enabling debug outputs or similar completely changes the nature of
|
||||
the behavior and things are not reproducing anymore!
|
||||
|
||||
HTTP pipelining was never enabled by default by the large desktop browsers due
|
||||
to all the issues with it. Both Firefox and Chrome have also dropped
|
||||
pipelining support entirely since a long time back now. We are in fact over
|
||||
time becoming more and more lonely in supporting pipelining.
|
||||
|
||||
The bad state of HTTP pipelining was a primary driving factor behind HTTP/2
|
||||
and its multiplexing feature. HTTP/2 multiplexing is truly and really
|
||||
"pipelining done right". It is way more solid, practical and solves the use
|
||||
case in a better way with better performance and fewer downsides and problems.
|
||||
|
||||
In 2018, pipelining *should* be abandoned and HTTP/2 should be used instead.
|
||||
|
||||
### State
|
||||
|
||||
In 7.62.0, we will add code that ignores the "enable pipeline" option
|
||||
setting). The *setopt() function would still return "OK" though so the
|
||||
application couldn't tell that this is happening.
|
||||
|
||||
Users who truly need pipelining from that version will need to modify the code
|
||||
(ever so slightly) and rebuild.
|
||||
|
||||
### Removal
|
||||
|
||||
Six months later, in sync with the planned release happen in April 2019,
|
||||
(might be 7.66.0), assuming no major riots have occurred due to this in the
|
||||
mean time, we rip out the pipelining code. It is in the order of 1000 lines of
|
||||
libcurl code.
|
||||
|
||||
Left to answer: should the *setopt() function start to return error when these
|
||||
options are set to be able to tell when they're trying to use options that are
|
||||
no longer around or should we maintain behavior as much as possible?
|
||||
|
||||
## `CURLOPT_DNS_USE_GLOBAL_CACHE`
|
||||
|
||||
This option makes libcurl use a global non-thread-safe cache for DNS if
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" *
|
||||
.\" * This software is licensed as described in the file COPYING, which
|
||||
.\" * you should have received as part of this distribution. The terms
|
||||
|
|
@ -28,6 +28,8 @@ CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining
|
|||
|
||||
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, long size);
|
||||
.SH DESCRIPTION
|
||||
No function since pipelining was removed in 7.62.0.
|
||||
|
||||
Pass a long with a \fBsize\fP in bytes. If a pipelined connection is currently
|
||||
processing a chunked (Transfer-encoding: chunked) request with a current chunk
|
||||
length larger than \fICURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)\fP, that pipeline
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" *
|
||||
.\" * This software is licensed as described in the file COPYING, which
|
||||
.\" * you should have received as part of this distribution. The terms
|
||||
|
|
@ -28,6 +28,8 @@ CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty
|
|||
|
||||
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, long size);
|
||||
.SH DESCRIPTION
|
||||
No function since pipelining was removed in 7.62.0.
|
||||
|
||||
Pass a long with a \fBsize\fP in bytes. If a pipelined connection is currently
|
||||
processing a request with a Content-Length larger than this
|
||||
\fICURLMOPT_CONTENT_LENGTH_PENALTY_SIZE(3)\fP, that pipeline will then not be
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" *
|
||||
.\" * This software is licensed as described in the file COPYING, which
|
||||
.\" * you should have received as part of this distribution. The terms
|
||||
|
|
@ -28,6 +28,8 @@ CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline
|
|||
|
||||
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_PIPELINE_LENGTH, long max);
|
||||
.SH DESCRIPTION
|
||||
No function since pipelining was removed in 7.62.0.
|
||||
|
||||
Pass a long. The set \fBmax\fP number will be used as the maximum amount of
|
||||
outstanding requests in an HTTP/1.1 pipelined connection. This option is only
|
||||
used for HTTP/1.1 pipelining, not for HTTP/2 multiplexing.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" *
|
||||
.\" * This software is licensed as described in the file COPYING, which
|
||||
.\" * you should have received as part of this distribution. The terms
|
||||
|
|
@ -71,12 +71,12 @@ HTTP(S)
|
|||
.SH EXAMPLE
|
||||
.nf
|
||||
CURLM *m = curl_multi_init();
|
||||
/* try HTTP/1 pipelining and HTTP/2 multiplexing */
|
||||
curl_multi_setopt(m, CURLMOPT_PIPELINING, CURLPIPE_HTTP1 |
|
||||
CURLPIPE_MULTIPLEX);
|
||||
/* try HTTP/2 multiplexing */
|
||||
curl_multi_setopt(m, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
|
||||
.fi
|
||||
.SH AVAILABILITY
|
||||
Added in 7.16.0. Multiplex support bit added in 7.43.0.
|
||||
Added in 7.16.0. Multiplex support bit added in 7.43.0. HTTP/1 Pipelining
|
||||
support was disabled in 7.62.0.
|
||||
.SH RETURN VALUE
|
||||
Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
|
||||
.SH "SEE ALSO"
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" *
|
||||
.\" * This software is licensed as described in the file COPYING, which
|
||||
.\" * you should have received as part of this distribution. The terms
|
||||
|
|
@ -28,6 +28,8 @@ CURLMOPT_PIPELINING_SERVER_BL \- pipelining server blacklist
|
|||
|
||||
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SERVER_BL, char **servers);
|
||||
.SH DESCRIPTION
|
||||
No function since pipelining was removed in 7.62.0.
|
||||
|
||||
Pass a \fBservers\fP array of char *, ending with a NULL entry. This is a list
|
||||
of server types prefixes (in the Server: HTTP header) that are blacklisted
|
||||
from pipelining, i.e server types that are known to not support HTTP
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" *
|
||||
.\" * This software is licensed as described in the file COPYING, which
|
||||
.\" * you should have received as part of this distribution. The terms
|
||||
|
|
@ -28,6 +28,8 @@ CURLMOPT_PIPELINING_SITE_BL \- pipelining host blacklist
|
|||
|
||||
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SITE_BL, char **hosts);
|
||||
.SH DESCRIPTION
|
||||
No function since pipelining was removed in 7.62.0.
|
||||
|
||||
Pass a \fBhosts\fP array of char *, ending with a NULL entry. This is a list
|
||||
of sites that are blacklisted from pipelining, i.e sites that are known to not
|
||||
support HTTP pipelining. The array is copied by libcurl.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue