.\" generated by cd2nroff 0.1 from curl_easy_upkeep.md .TH curl_easy_upkeep 3 "2024-09-25" libcurl .SH NAME curl_easy_upkeep \- keep existing connections alive .SH SYNOPSIS .nf #include CURLcode curl_easy_upkeep(CURL *handle); .fi .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_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_UPKEEP_INTERVAL_MS(3)\fP. 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) .SH PROTOCOLS This functionality affects all supported protocols .SH EXAMPLE .nf 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); } } .fi .SH AVAILABILITY Added in curl 7.62.0 .SH RETURN VALUE On success, returns \fBCURLE_OK\fP. On failure, returns the appropriate error code. .SH SEE ALSO .BR CURLOPT_TCP_KEEPALIVE (3), .BR CURLOPT_TCP_KEEPIDLE (3)