diff options
author | Jeffrey Tolar <tolar@yahooinc.com> | 2021-09-18 11:29:44 -0500 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2021-10-06 14:38:59 +0200 |
commit | 5f563495f1f9cf7ef4f23f997e4c2707dd3e74a8 (patch) | |
tree | e6d017874795f4c0bfe61105b1a245f44699ae2c /docs | |
parent | 013cb2ff7d3a37cab6910cc2e4d255377d341b6e (diff) | |
download | curl-5f563495f1f9cf7ef4f23f997e4c2707dd3e74a8.tar.gz |
CURLOPT_MAXLIFETIME_CONN: maximum allowed lifetime for conn reuse
... and close connections that are too old instead of reusing them.
By default, this behavior is disabled.
Bug: https://curl.se/mail/lib-2021-09/0058.html
Closes #7751
Diffstat (limited to 'docs')
-rw-r--r-- | docs/libcurl/curl_easy_setopt.3 | 4 | ||||
-rw-r--r-- | docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 | 1 | ||||
-rw-r--r-- | docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3 | 6 | ||||
-rw-r--r-- | docs/libcurl/opts/CURLOPT_MAXLIFETIME_CONN.3 | 66 | ||||
-rw-r--r-- | docs/libcurl/opts/Makefile.inc | 1 | ||||
-rw-r--r-- | docs/libcurl/symbols-in-versions | 1 |
6 files changed, 75 insertions, 4 deletions
diff --git a/docs/libcurl/curl_easy_setopt.3 b/docs/libcurl/curl_easy_setopt.3 index b1abf43e3..feb9a3955 100644 --- a/docs/libcurl/curl_easy_setopt.3 +++ b/docs/libcurl/curl_easy_setopt.3 @@ -492,7 +492,9 @@ Use a new connection. \fICURLOPT_FRESH_CONNECT(3)\fP .IP CURLOPT_FORBID_REUSE Prevent subsequent connections from re-using this. See \fICURLOPT_FORBID_REUSE(3)\fP .IP CURLOPT_MAXAGE_CONN -Limit the age of connections for reuse. See \fICURLOPT_MAXAGE_CONN(3)\fP +Limit the age (idle time) of connections for reuse. See \fICURLOPT_MAXAGE_CONN(3)\fP +.IP CURLOPT_MAXLIFETIME_CONN +Limit the age (since creation) of connections for reuse. See \fICURLOPT_MAXLIFETIME_CONN(3)\fP .IP CURLOPT_CONNECTTIMEOUT Timeout for the connection phase. See \fICURLOPT_CONNECTTIMEOUT(3)\fP .IP CURLOPT_CONNECTTIMEOUT_MS diff --git a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 index a1b2a8272..f2d6dd37e 100644 --- a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 +++ b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 @@ -57,3 +57,4 @@ Always Returns CURLE_OK .SH "SEE ALSO" .BR CURLOPT_FRESH_CONNECT "(3), " CURLOPT_MAXCONNECTS "(3), " +.BR CURLOPT_MAXLIFETIME_CONN "(3), " diff --git a/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3 b/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3 index 0624e2e8f..40127c801 100644 --- a/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3 +++ b/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3 @@ -29,8 +29,8 @@ CURLOPT_MAXAGE_CONN \- max idle time allowed for reusing a connection CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXAGE_CONN, long maxage); .SH DESCRIPTION Pass a long as parameter containing \fImaxage\fP - the maximum time in seconds -that you allow an existing connection to have to be considered for reuse for -this request. +that you allow an existing connection to have been idle to be considered for +reuse for this request. The "connection cache" that holds previously used connections. When a new request is to be done, it will consider any connection that matches for @@ -62,4 +62,4 @@ Added in libcurl 7.65.0 Returns CURLE_OK. .SH "SEE ALSO" .BR CURLOPT_TIMEOUT "(3), " CURLOPT_FORBID_REUSE "(3), " -.BR CURLOPT_FRESH_CONNECT "(3), " +.BR CURLOPT_FRESH_CONNECT "(3), " CURLOPT_MAXLIFETIME_CONN "(3), " diff --git a/docs/libcurl/opts/CURLOPT_MAXLIFETIME_CONN.3 b/docs/libcurl/opts/CURLOPT_MAXLIFETIME_CONN.3 new file mode 100644 index 000000000..eeb6c134e --- /dev/null +++ b/docs/libcurl/opts/CURLOPT_MAXLIFETIME_CONN.3 @@ -0,0 +1,66 @@ +.\" ************************************************************************** +.\" * _ _ ____ _ +.\" * Project ___| | | | _ \| | +.\" * / __| | | | |_) | | +.\" * | (__| |_| | _ <| |___ +.\" * \___|\___/|_| \_\_____| +.\" * +.\" * Copyright (C) 2021, 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 +.\" * are also available at https://curl.se/docs/copyright.html. +.\" * +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell +.\" * copies of the Software, and permit persons to whom the Software is +.\" * furnished to do so, under the terms of the COPYING file. +.\" * +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +.\" * KIND, either express or implied. +.\" * +.\" ************************************************************************** +.\" +.TH CURLOPT_MAXLIFETIME_CONN 3 "10 Nov 2021" "libcurl 7.80.0" "curl_easy_setopt options" +.SH NAME +CURLOPT_MAXLIFETIME_CONN \- max lifetime (since creation) allowed for reusing a connection +.SH SYNOPSIS +#include <curl/curl.h> + +CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXLIFETIME_CONN, long maxlifetime); +.SH DESCRIPTION +Pass a long as parameter containing \fImaxlifetime\fP - the maximum time in +seconds, since the creation of the connection, that you allow an existing +connection to have to be considered for reuse for this request. + +libcurl features a connection cache that holds previously used connections. +When a new request is to be done, it will consider any connection that matches +for reuse. The \fICURLOPT_MAXLIFETIME_CONN(3)\fP limit prevents libcurl from +trying very old connections for reuse. This can be used for client-side load +balancing. If a connection is found in the cache that is older than this set +\fImaxlifetime\fP, it will instead be closed once any in-progress transfers +complete. + +If set to 0, this behavior is disabled: all connections are eligible for reuse. +.SH DEFAULT +Default \fImaxlifetime\fP is 0 seconds (i.e., disabled). +.SH PROTOCOLS +All +.SH EXAMPLE +.nf +CURL *curl = curl_easy_init(); +if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + + /* only allow each connection to be reused for 30 seconds */ + curl_easy_setopt(curl, CURLOPT_MAXLIFETIME_CONN, 30L); + + curl_easy_perform(curl); +} +.fi +.SH AVAILABILITY +Added in libcurl 7.80.0 +.SH RETURN VALUE +Returns CURLE_OK. +.SH "SEE ALSO" +.BR CURLOPT_TIMEOUT "(3), " CURLOPT_FORBID_REUSE "(3), " +.BR CURLOPT_FRESH_CONNECT "(3), " CURLOPT_MAXAGE_CONN "(3), " diff --git a/docs/libcurl/opts/Makefile.inc b/docs/libcurl/opts/Makefile.inc index 7bac21024..55a0a3b7c 100644 --- a/docs/libcurl/opts/Makefile.inc +++ b/docs/libcurl/opts/Makefile.inc @@ -228,6 +228,7 @@ man_MANS = \ CURLOPT_MAXCONNECTS.3 \ CURLOPT_MAXFILESIZE.3 \ CURLOPT_MAXFILESIZE_LARGE.3 \ + CURLOPT_MAXLIFETIME_CONN.3 \ CURLOPT_MAXREDIRS.3 \ CURLOPT_MAX_RECV_SPEED_LARGE.3 \ CURLOPT_MAX_SEND_SPEED_LARGE.3 \ diff --git a/docs/libcurl/symbols-in-versions b/docs/libcurl/symbols-in-versions index 1dbcdbd3e..a8f2e08be 100644 --- a/docs/libcurl/symbols-in-versions +++ b/docs/libcurl/symbols-in-versions @@ -499,6 +499,7 @@ CURLOPT_MAXAGE_CONN 7.65.0 CURLOPT_MAXCONNECTS 7.7 CURLOPT_MAXFILESIZE 7.10.8 CURLOPT_MAXFILESIZE_LARGE 7.11.0 +CURLOPT_MAXLIFETIME_CONN 7.80.0 CURLOPT_MAXREDIRS 7.5 CURLOPT_MAX_RECV_SPEED_LARGE 7.15.5 CURLOPT_MAX_SEND_SPEED_LARGE 7.15.5 |