| .\" ************************************************************************** |
| .\" * _ _ ____ _ |
| .\" * Project ___| | | | _ \| | |
| .\" * / __| | | | |_) | | |
| .\" * | (__| |_| | _ <| |___ |
| .\" * \___|\___/|_| \_\_____| |
| .\" * |
| .\" * Copyright (C) 1998 - 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 curl_easy_getinfo 3 "February 19, 2021" "libcurl 7.78.0" "libcurl Manual" |
| |
| .SH NAME |
| curl_easy_getinfo - extract information from a curl handle |
| .SH SYNOPSIS |
| .B #include <curl/curl.h> |
| |
| .B "CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ... );" |
| |
| .SH DESCRIPTION |
| Request internal information from the curl session with this function. The |
| third argument \fBMUST\fP be a pointer to a long, a pointer to a char *, a |
| pointer to a struct curl_slist * or a pointer to a double (as this |
| documentation describes further down). The data pointed-to will be filled in |
| accordingly and can be relied upon only if the function returns CURLE_OK. Use |
| this function AFTER a performed transfer if you want to get transfer related |
| data. |
| |
| You should not free the memory returned by this function unless it is |
| explicitly mentioned below. |
| .SH AVAILABLE INFORMATION |
| The following information can be extracted: |
| .IP CURLINFO_EFFECTIVE_METHOD |
| Last used HTTP method. |
| See \fICURLINFO_EFFECTIVE_METHOD(3)\fP |
| .IP CURLINFO_EFFECTIVE_URL |
| Last used URL. |
| See \fICURLINFO_EFFECTIVE_URL(3)\fP |
| .IP CURLINFO_RESPONSE_CODE |
| Last received response code. |
| See \fICURLINFO_RESPONSE_CODE(3)\fP |
| .IP CURLINFO_REFERER |
| Referrer header. |
| See \fICURLINFO_REFERER(3)\fP |
| .IP CURLINFO_HTTP_CONNECTCODE |
| Last proxy CONNECT response code. |
| See \fICURLINFO_HTTP_CONNECTCODE(3)\fP |
| .IP CURLINFO_HTTP_VERSION |
| The http version used in the connection. |
| See \fICURLINFO_HTTP_VERSION(3)\fP |
| .IP CURLINFO_FILETIME |
| Remote time of the retrieved document. See \fICURLINFO_FILETIME(3)\fP |
| .IP CURLINFO_FILETIME_T |
| Remote time of the retrieved document. See \fICURLINFO_FILETIME_T(3)\fP |
| .IP CURLINFO_TOTAL_TIME |
| Total time of previous transfer. |
| See \fICURLINFO_TOTAL_TIME(3)\fP |
| .IP CURLINFO_TOTAL_TIME_T |
| Total time of previous transfer. |
| See \fICURLINFO_TOTAL_TIME_T(3)\fP |
| .IP CURLINFO_NAMELOOKUP_TIME |
| Time from start until name resolving completed. |
| See \fICURLINFO_NAMELOOKUP_TIME(3)\fP |
| .IP CURLINFO_NAMELOOKUP_TIME_T |
| Time from start until name resolving completed. |
| See \fICURLINFO_NAMELOOKUP_TIME_T(3)\fP |
| .IP CURLINFO_CONNECT_TIME |
| Time from start until remote host or proxy completed. |
| See \fICURLINFO_CONNECT_TIME(3)\fP |
| .IP CURLINFO_CONNECT_TIME_T |
| Time from start until remote host or proxy completed. |
| See \fICURLINFO_CONNECT_TIME_T(3)\fP |
| .IP CURLINFO_APPCONNECT_TIME |
| Time from start until SSL/SSH handshake completed. |
| See \fICURLINFO_APPCONNECT_TIME(3)\fP |
| .IP CURLINFO_APPCONNECT_TIME_T |
| Time from start until SSL/SSH handshake completed. |
| See \fICURLINFO_APPCONNECT_TIME_T(3)\fP |
| .IP CURLINFO_PRETRANSFER_TIME |
| Time from start until just before the transfer begins. |
| See \fICURLINFO_PRETRANSFER_TIME(3)\fP |
| .IP CURLINFO_PRETRANSFER_TIME_T |
| Time from start until just before the transfer begins. |
| See \fICURLINFO_PRETRANSFER_TIME_T(3)\fP |
| .IP CURLINFO_STARTTRANSFER_TIME |
| Time from start until just when the first byte is received. |
| See \fICURLINFO_STARTTRANSFER_TIME(3)\fP |
| .IP CURLINFO_STARTTRANSFER_TIME_T |
| Time from start until just when the first byte is received. |
| See \fICURLINFO_STARTTRANSFER_TIME_T(3)\fP |
| .IP CURLINFO_REDIRECT_TIME |
| Time taken for all redirect steps before the final transfer. |
| See \fICURLINFO_REDIRECT_TIME(3)\fP |
| .IP CURLINFO_REDIRECT_TIME_T |
| Time taken for all redirect steps before the final transfer. |
| See \fICURLINFO_REDIRECT_TIME_T(3)\fP |
| .IP CURLINFO_REDIRECT_COUNT |
| Total number of redirects that were followed. |
| See \fICURLINFO_REDIRECT_COUNT(3)\fP |
| .IP CURLINFO_REDIRECT_URL |
| URL a redirect would take you to, had you enabled redirects. |
| See \fICURLINFO_REDIRECT_URL(3)\fP |
| .IP CURLINFO_SIZE_UPLOAD |
| (Deprecated) Number of bytes uploaded. |
| See \fICURLINFO_SIZE_UPLOAD(3)\fP |
| .IP CURLINFO_SIZE_UPLOAD_T |
| Number of bytes uploaded. |
| See \fICURLINFO_SIZE_UPLOAD_T(3)\fP |
| .IP CURLINFO_SIZE_DOWNLOAD |
| (Deprecated) Number of bytes downloaded. |
| See \fICURLINFO_SIZE_DOWNLOAD(3)\fP |
| .IP CURLINFO_SIZE_DOWNLOAD_T |
| Number of bytes downloaded. |
| See \fICURLINFO_SIZE_DOWNLOAD_T(3)\fP |
| .IP CURLINFO_SPEED_DOWNLOAD |
| (Deprecated) Average download speed. |
| See \fICURLINFO_SPEED_DOWNLOAD(3)\fP |
| .IP CURLINFO_SPEED_DOWNLOAD_T |
| Average download speed. |
| See \fICURLINFO_SPEED_DOWNLOAD_T(3)\fP |
| .IP CURLINFO_SPEED_UPLOAD |
| (Deprecated) Average upload speed. |
| See \fICURLINFO_SPEED_UPLOAD(3)\fP |
| .IP CURLINFO_SPEED_UPLOAD_T |
| Average upload speed. |
| See \fICURLINFO_SPEED_UPLOAD_T(3)\fP |
| .IP CURLINFO_HEADER_SIZE |
| Number of bytes of all headers received. |
| See \fICURLINFO_HEADER_SIZE(3)\fP |
| .IP CURLINFO_REQUEST_SIZE |
| Number of bytes sent in the issued HTTP requests. |
| See \fICURLINFO_REQUEST_SIZE(3)\fP |
| .IP CURLINFO_SSL_VERIFYRESULT |
| Certificate verification result. |
| See \fICURLINFO_SSL_VERIFYRESULT(3)\fP |
| .IP CURLINFO_PROXY_ERROR |
| Detailed proxy error. |
| See \fICURLINFO_PROXY_ERROR(3)\fP |
| .IP CURLINFO_PROXY_SSL_VERIFYRESULT |
| Proxy certificate verification result. |
| See \fICURLINFO_PROXY_SSL_VERIFYRESULT(3)\fP |
| .IP CURLINFO_SSL_ENGINES |
| A list of OpenSSL crypto engines. |
| See \fICURLINFO_SSL_ENGINES(3)\fP |
| .IP CURLINFO_CONTENT_LENGTH_DOWNLOAD |
| (Deprecated) Content length from the Content-Length header. |
| See \fICURLINFO_CONTENT_LENGTH_DOWNLOAD(3)\fP |
| .IP CURLINFO_CONTENT_LENGTH_DOWNLOAD_T |
| Content length from the Content-Length header. |
| See \fICURLINFO_CONTENT_LENGTH_DOWNLOAD_T(3)\fP |
| .IP CURLINFO_CONTENT_LENGTH_UPLOAD |
| (Deprecated) Upload size. See \fICURLINFO_CONTENT_LENGTH_UPLOAD(3)\fP |
| .IP CURLINFO_CONTENT_LENGTH_UPLOAD_T |
| Upload size. See \fICURLINFO_CONTENT_LENGTH_UPLOAD_T(3)\fP |
| .IP CURLINFO_CONTENT_TYPE |
| Content type from the Content-Type header. |
| See \fICURLINFO_CONTENT_TYPE(3)\fP |
| .IP CURLINFO_RETRY_AFTER |
| The value from the from the Retry-After header. |
| See \fICURLINFO_RETRY_AFTER(3)\fP |
| .IP CURLINFO_PRIVATE |
| User's private data pointer. |
| See \fICURLINFO_PRIVATE(3)\fP |
| .IP CURLINFO_HTTPAUTH_AVAIL |
| Available HTTP authentication methods. |
| See \fICURLINFO_HTTPAUTH_AVAIL(3)\fP |
| .IP CURLINFO_PROXYAUTH_AVAIL |
| Available HTTP proxy authentication methods. |
| See \fICURLINFO_PROXYAUTH_AVAIL(3)\fP |
| .IP CURLINFO_OS_ERRNO |
| The errno from the last failure to connect. |
| See \fICURLINFO_OS_ERRNO(3)\fP |
| .IP CURLINFO_NUM_CONNECTS |
| Number of new successful connections used for previous transfer. |
| See \fICURLINFO_NUM_CONNECTS(3)\fP |
| .IP CURLINFO_PRIMARY_IP |
| IP address of the last connection. |
| See \fICURLINFO_PRIMARY_IP(3)\fP |
| .IP CURLINFO_PRIMARY_PORT |
| Port of the last connection. |
| See \fICURLINFO_PRIMARY_PORT(3)\fP |
| .IP CURLINFO_LOCAL_IP |
| Local-end IP address of last connection. |
| See \fICURLINFO_LOCAL_IP(3)\fP |
| .IP CURLINFO_LOCAL_PORT |
| Local-end port of last connection. |
| See \fICURLINFO_LOCAL_PORT(3)\fP |
| .IP CURLINFO_COOKIELIST |
| List of all known cookies. |
| See \fICURLINFO_COOKIELIST(3)\fP |
| .IP CURLINFO_LASTSOCKET |
| Last socket used. |
| See \fICURLINFO_LASTSOCKET(3)\fP |
| .IP CURLINFO_ACTIVESOCKET |
| The session's active socket. |
| See \fICURLINFO_ACTIVESOCKET(3)\fP |
| .IP CURLINFO_FTP_ENTRY_PATH |
| The entry path after logging in to an FTP server. |
| See \fICURLINFO_FTP_ENTRY_PATH(3)\fP |
| .IP CURLINFO_CERTINFO |
| Certificate chain. |
| See \fICURLINFO_CERTINFO(3)\fP |
| .IP CURLINFO_TLS_SSL_PTR |
| TLS session info that can be used for further processing. |
| See \fICURLINFO_TLS_SSL_PTR(3)\fP |
| .IP CURLINFO_TLS_SESSION |
| TLS session info that can be used for further processing. See |
| \fICURLINFO_TLS_SESSION(3)\fP. Deprecated option, use |
| \fICURLINFO_TLS_SSL_PTR(3)\fP instead! |
| .IP CURLINFO_CONDITION_UNMET |
| Whether or not a time conditional was met or 304 HTTP response. |
| See \fICURLINFO_CONDITION_UNMET(3)\fP |
| .IP CURLINFO_RTSP_SESSION_ID |
| RTSP session ID. |
| See \fICURLINFO_RTSP_SESSION_ID(3)\fP |
| .IP CURLINFO_RTSP_CLIENT_CSEQ |
| RTSP CSeq that will next be used. |
| See \fICURLINFO_RTSP_CLIENT_CSEQ(3)\fP |
| .IP CURLINFO_RTSP_SERVER_CSEQ |
| RTSP CSeq that will next be expected. |
| See \fICURLINFO_RTSP_SERVER_CSEQ(3)\fP |
| .IP CURLINFO_RTSP_CSEQ_RECV |
| RTSP CSeq last received. |
| See \fICURLINFO_RTSP_CSEQ_RECV(3)\fP |
| .IP CURLINFO_PROTOCOL |
| The protocol used for the connection. (Added in 7.52.0) |
| See \fICURLINFO_PROTOCOL(3)\fP |
| .IP CURLINFO_SCHEME |
| The scheme used for the connection. (Added in 7.52.0) |
| See \fICURLINFO_SCHEME(3)\fP |
| .SH TIMES |
| .nf |
| An overview of the six time values available from curl_easy_getinfo() |
| |
| curl_easy_perform() |
| | |
| |--NAMELOOKUP |
| |--|--CONNECT |
| |--|--|--APPCONNECT |
| |--|--|--|--PRETRANSFER |
| |--|--|--|--|--STARTTRANSFER |
| |--|--|--|--|--|--TOTAL |
| |--|--|--|--|--|--REDIRECT |
| .fi |
| .IP NAMELOOKUP |
| \fICURLINFO_NAMELOOKUP_TIME\fP and \fICURLINFO_NAMELOOKUP_TIME_T\fP. |
| The time it took from the start until the name resolving was completed. |
| .IP CONNECT |
| \fICURLINFO_CONNECT_TIME\fP and \fICURLINFO_CONNECT_TIME_T\fP. |
| The time it took from the start until the connect |
| to the remote host (or proxy) was completed. |
| .IP APPCONNECT |
| \fICURLINFO_APPCONNECT_TIME\fP and \fICURLINFO_APPCONNECT_TIME_T\fP. |
| The time it took from the start until the SSL |
| connect/handshake with the remote host was completed. (Added in 7.19.0) |
| The latter is the integer version (measuring microseconds). (Added in 7.60.0) |
| .IP PRETRANSFER |
| \fICURLINFO_PRETRANSFER_TIME\fP and \fICURLINFO_PRETRANSFER_TIME_T\fP. |
| The time it took from the start until the |
| file transfer is just about to begin. This includes all pre-transfer commands |
| and negotiations that are specific to the particular protocol(s) involved. |
| .IP STARTTRANSFER |
| \fICURLINFO_STARTTRANSFER_TIME\fP and \fICURLINFO_STARTTRANSFER_TIME_T\fP. |
| The time it took from the start until the |
| first byte is received by libcurl. |
| .IP TOTAL |
| \fICURLINFO_TOTAL_TIME\fP and \fICURLINFO_TOTAL_TIME_T\fP. |
| Total time of the previous request. |
| .IP REDIRECT |
| \fICURLINFO_REDIRECT_TIME\fP and \fICURLINFO_REDIRECT_TIME_T\fP. |
| The time it took for all redirection steps |
| include name lookup, connect, pretransfer and transfer before final |
| transaction was started. So, this is zero if no redirection took place. |
| .SH RETURN VALUE |
| If the operation was successful, CURLE_OK is returned. Otherwise an |
| appropriate error code will be returned. |
| .SH "SEE ALSO" |
| .BR curl_easy_setopt "(3)" |