.\" ************************************************************************** .\" * _ _ ____ _ .\" * Project ___| | | | _ \| | .\" * / __| | | | |_) | | .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * .\" * Copyright (C) Daniel Stenberg, , 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. .\" * .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** .\" .TH curl_easy_cleanup 3 "January 02, 2023" "libcurl 7.88.1" "libcurl Manual" .SH NAME curl_easy_cleanup - End a libcurl easy handle .SH SYNOPSIS .nf #include void curl_easy_cleanup(CURL *handle); .fi .SH DESCRIPTION This function must be the last function to call for an easy session. It is the opposite of the \fIcurl_easy_init(3)\fP function and must be called with the same \fIhandle\fP as input that a \fIcurl_easy_init(3)\fP call returned. This might close all connections this handle has used and possibly has kept open until now - unless it was attached to a multi handle while doing the transfers. Do not call this function if you intend to transfer more files, re-using handles is a key to good performance with libcurl. Occasionally you may get your progress callback or header callback called from within \fIcurl_easy_cleanup(3)\fP (if previously set for the handle using \fIcurl_easy_setopt(3)\fP). Like if libcurl decides to shut down the connection and the protocol is of a kind that requires a command/response sequence before disconnect. Examples of such protocols are FTP, POP3 and IMAP. Any use of the \fBhandle\fP after this function has been called and have returned, is illegal. \fIcurl_easy_cleanup(3)\fP kills the handle and all memory associated with it! To close an easy handle that has been used with the multi interface, make sure to call \fIcurl_multi_remove_handle(3)\fP first to remove it from the multi handle before it is closed. Passing in a NULL pointer in \fIhandle\fP will make this function return immediately with no action. .SH EXAMPLE .nf CURL *curl = curl_easy_init(); if(curl) { CURLcode res; curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); res = curl_easy_perform(curl); curl_easy_cleanup(curl); } .fi .SH AVAILABILITY Added in 7.1 .SH RETURN VALUE None .SH "SEE ALSO" .BR curl_easy_init "(3), " curl_easy_duphandle "(3), " .BR curl_easy_reset "(3), " .BR curl_multi_cleanup "(3), " curl_multi_remove_handle "(3) "