Man page - curl_easy_upkeep(3)
Packages contains this manual
- libcurl-tutorial(3)
- curl_global_sslset(3)
- curl_easy_strerror(3)
- curl_mvaprintf(3)
- curl_multi_remove_handle(3)
- curl_msprintf(3)
- curl_multi_init(3)
- curl_unescape(3)
- curl_mvfprintf(3)
- curl_multi_timeout(3)
- curl_multi_info_read(3)
- curl_multi_waitfds(3)
- curl_easy_duphandle(3)
- curl_global_cleanup(3)
- curl_easy_option_next(3)
- curl_url_strerror(3)
- curl_mprintf(3)
- curl_easy_upkeep(3)
- curl_multi_wait(3)
- curl_share_init(3)
- curl_strequal(3)
- curl_slist_append(3)
- curl_easy_setopt(3)
- curl_easy_cleanup(3)
- curl_mime_type(3)
- libcurl-multi(3)
- curl_multi_poll(3)
- curl_free(3)
- curl_ws_meta(3)
- curl_mvsprintf(3)
- curl_mime_subparts(3)
- curl_getenv(3)
- curl_easy_header(3)
- curl_mime_headers(3)
- curl_url_get(3)
- curl_maprintf(3)
- curl_mime_free(3)
- curl_easy_getinfo(3)
- curl_version(3)
- curl_mime_addpart(3)
- curl_formget(3)
- curl_easy_option_by_name(3)
- curl_msnprintf(3)
- curl_mime_init(3)
- curl_mvsnprintf(3)
- curl_easy_ssls_export(3)
- libcurl-easy(3)
- curl_pushheader_bynum(3)
- curl_multi_add_handle(3)
- curl_ws_send(3)
- libcurl-thread(3)
- curl_version_info(3)
- curl_easy_perform(3)
- curl_mvprintf(3)
- libcurl-env-dbg(3)
- curl_share_strerror(3)
- libcurl-ws(3)
- libcurl-url(3)
- curl_multi_socket_all(3)
- curl_url(3)
- curl_mime_data_cb(3)
- curl_getdate(3)
- curl_global_trace(3)
- curl_url_cleanup(3)
- curl_multi_get_handles(3)
- curl_multi_setopt(3)
- curl_pushheader_byname(3)
- curl_multi_assign(3)
- curl_easy_nextheader(3)
- curl_mime_data(3)
- curl_multi_fdset(3)
- curl_multi_cleanup(3)
- curl_mfprintf(3)
- curl_easy_escape(3)
- libcurl-security(3)
- curl_global_init_mem(3)
- curl_multi_wakeup(3)
- curl_url_set(3)
- curl_url_dup(3)
- libcurl-symbols(3)
- curl_share_cleanup(3)
- curl_easy_recv(3)
- curl_easy_pause(3)
- curl_easy_send(3)
- curl_share_setopt(3)
- curl_multi_socket(3)
- curl_multi_strerror(3)
- curl_ws_recv(3)
- curl_formadd(3)
- curl_easy_option_by_id(3)
- libcurl(3)
- curl_easy_reset(3)
- libcurl-errors(3)
- libcurl-share(3)
- curl_multi_socket_action(3)
- curl_multi_perform(3)
- curl_mime_filename(3)
- curl_escape(3)
- curl_global_init(3)
- curl_strnequal(3)
- curl_easy_unescape(3)
- curl_slist_free_all(3)
- curl_mime_encoder(3)
- curl_formfree(3)
- curl_easy_init(3)
- curl_mime_filedata(3)
- curl_easy_ssls_import(3)
- curl_mime_name(3)
- libcurl-env(3)
apt-get install libcurl4-doc
Manual
curl_easy_upkeep
NAMESYNOPSIS
DESCRIPTION
PROTOCOLS
EXAMPLE
AVAILABILITY
RETURN VALUE
SEE ALSO
NAME
curl_easy_upkeep - keep existing connections alive
SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_upkeep(CURL *handle);
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.
For HTTP/2 we have an upkeep mechanism: when the connection upkeep interval is exceeded and curl_easy_upkeep(3) is called, an HTTP/2 PING frame is sent on the connection.
For MQTT the upkeep interval defines when to send ping requests to prevent the server from disconnecting.
This function must be explicitly called in order to perform the upkeep work. The connection upkeep interval is set with CURLOPT_UPKEEP_INTERVAL_MS(3) .
If you call this function on an easy handle that uses a shared connection cache then upkeep is performed on the connections in that cache, even if those connections were never used by the easy handle. (Added in 8.10.0)
PROTOCOLS
This functionality affects all supported protocols
EXAMPLE
int main(void)
{
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_UPKEEP_INTERVAL_MS,
30000L);
curl_easy_perform(curl);
/* Perform more work here. */
/* While the
connection is being held open, curl_easy_upkeep() can be
called. If curl_easy_upkeep() is called and the time since
the last
upkeep exceeds the interval, then an HTTP/2 PING is sent. */
curl_easy_upkeep(curl);
/* Perform more work here. */
/* always
cleanup */
curl_easy_cleanup(curl);
}
}
AVAILABILITY
Added in curl 7.62.0
RETURN VALUE
This function returns a CURLcode indicating success or error.
CURLE_OK (0) means everything was OK, non-zero means an error occurred, see libcurl-errors(3) . If CURLOPT_ERRORBUFFER(3) was set with curl_easy_setopt(3) there can be an error message stored in the error buffer when non-zero is returned.
SEE ALSO
CURLOPT_TCP_KEEPALIVE (3), CURLOPT_TCP_KEEPIDLE (3)