Loading docs/DEPRECATE.md +0 −40 Original line number Diff line number Diff line Loading @@ -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 Loading docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 +3 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 +3 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 +3 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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. Loading docs/libcurl/opts/CURLMOPT_PIPELINING.3 +5 −5 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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" Loading Loading
docs/DEPRECATE.md +0 −40 Original line number Diff line number Diff line Loading @@ -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 Loading
docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 +3 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading
docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 +3 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading
docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 +3 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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. Loading
docs/libcurl/opts/CURLMOPT_PIPELINING.3 +5 −5 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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" Loading