forked from curl/curl
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
upkeep: add a connection upkeep API: curl_easy_conn_upkeep()
Add functionality so that protocols can do custom keepalive on their connections, when an external API function is called. Add docs for the new options in 7.62.0 Closes curl#1641
- Loading branch information
1 parent
7e304d5
commit 03e2aab
Showing
15 changed files
with
280 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
.\" ************************************************************************** | ||
.\" * _ _ ____ _ | ||
.\" * Project ___| | | | _ \| | | ||
.\" * / __| | | | |_) | | | ||
.\" * | (__| |_| | _ <| |___ | ||
.\" * \___|\___/|_| \_\_____| | ||
.\" * | ||
.\" * Copyright (C) 1998 - 2018, 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.haxx.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 curl_easy_conn_upkeep 3 "31 Oct 2018" "libcurl 7.62.0" "libcurl Manual" | ||
.SH NAME | ||
curl_easy_conn_upkeep - Perform any connection upkeep checks. | ||
.SH SYNOPSIS | ||
.B #include <curl/curl.h> | ||
|
||
.BI "CURLcode curl_easy_conn_upkeep(CURL *" handle ");" | ||
.SH DESCRIPTION | ||
|
||
Some protocols have "connection upkeep" mechanisms. These mechanisms usually | ||
send some traffic on existing connections in order to keep them alive; this | ||
can prevent connections from being closed due to overzealous firewalls, for | ||
example. | ||
|
||
Currently the only protocol with a connection upkeep mechanism is HTTP/2: when | ||
the connection upkeep interval is exceeded and \fIcurl_easy_conn_upkeep(3)\fP | ||
is called, an HTTP/2 PING frame is sent on the connection. | ||
|
||
This function must be explicitly called in order to perform the upkeep work. | ||
The connection upkeep interval is set with | ||
\fICURLOPT_CONN_UPKEEP_INTERVAL_MS(3)\fP. | ||
|
||
.SH AVAILABILITY | ||
Added in 7.62.0. | ||
.SH RETURN VALUE | ||
On success, returns \fBCURLE_OK\fP. | ||
|
||
On failure, returns the appropriate error code. | ||
|
||
.SH EXAMPLE | ||
.nf | ||
CURL *curl = curl_easy_init(); | ||
if(curl) { | ||
/* Make a connection to an HTTP/2 server. */ | ||
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); | ||
|
||
/* Set the interval to 30000ms / 30s */ | ||
curl_easy_setopt(curl, CURLOPT_CONN_UPKEEP_INTERVAL_MS, 30000L); | ||
|
||
curl_easy_perform(curl); | ||
|
||
/* Perform more work here. */ | ||
|
||
/* While the connection is being held open, curl_easy_conn_upkeep() can be | ||
called. If curl_easy_conn_upkeep() is called and the time since the last | ||
upkeep exceeds the interval, then an HTTP/2 PING is sent. */ | ||
curl_easy_conn_upkeep(curl); | ||
|
||
/* Perform more work here. */ | ||
|
||
/* always cleanup */ | ||
curl_easy_cleanup(curl); | ||
} | ||
|
||
.fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
.\" ************************************************************************** | ||
.\" * _ _ ____ _ | ||
.\" * Project ___| | | | _ \| | | ||
.\" * / __| | | | |_) | | | ||
.\" * | (__| |_| | _ <| |___ | ||
.\" * \___|\___/|_| \_\_____| | ||
.\" * | ||
.\" * Copyright (C) 1998 - 2018, 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.haxx.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_CONN_UPKEEP_INTERVAL_MS 3 "31 Oct 2018" "libcurl 7.62.0" "curl_easy_setopt options" | ||
.SH NAME | ||
CURLOPT_CONN_UPKEEP_INTERVAL_MS \- connection upkeep interval | ||
.SH SYNOPSIS | ||
#include <curl/curl.h> | ||
|
||
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONN_UPKEEP_INTERVAL_MS, long upkeep_interval_ms); | ||
.SH DESCRIPTION | ||
Some protocols have "connection upkeep" mechanisms. These mechanisms usually | ||
send some traffic on existing connections in order to keep them alive; this | ||
can prevent connections from being closed due to overzealous firewalls, for | ||
example. | ||
|
||
The user needs to explicitly call \fIcurl_easy_conn_upkeep(3)\fP in order to | ||
perform the upkeep work. | ||
|
||
Currently the only protocol with a connection upkeep mechanism is HTTP/2: when | ||
the connection upkeep interval is exceeded and \fIcurl_easy_conn_upkeep(3)\fP | ||
is called, an HTTP/2 PING frame is sent on the connection. | ||
|
||
.SH DEFAULT | ||
CURL_UPKEEP_INTERVAL_DEFAULT (currently defined as 60000L, which is 60 seconds) | ||
.SH EXAMPLE | ||
.nf | ||
CURL *curl = curl_easy_init(); | ||
if(curl) { | ||
/* Make a connection to an HTTP/2 server. */ | ||
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); | ||
|
||
/* Set the interval to 30000ms / 30s */ | ||
curl_easy_setopt(curl, CURLOPT_CONN_UPKEEP_INTERVAL_MS, 30000L); | ||
|
||
curl_easy_perform(curl); | ||
|
||
/* Perform more work here. */ | ||
|
||
/* While the connection is being held open, curl_easy_conn_upkeep() can be | ||
called. If curl_easy_conn_upkeep() is called and the time since the last | ||
upkeep exceeds the interval, then an HTTP/2 PING is sent. */ | ||
curl_easy_conn_upkeep(curl); | ||
|
||
/* Perform more work here. */ | ||
|
||
/* always cleanup */ | ||
curl_easy_cleanup(curl); | ||
} | ||
.fi | ||
.SH AVAILABILITY | ||
Added in 7.62.0 | ||
.SH RETURN VALUE | ||
Returns CURLE_OK |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.