2006-03-22 06:30:03 +08:00
|
|
|
.\" **************************************************************************
|
|
|
|
.\" * _ _ ____ _
|
|
|
|
.\" * Project ___| | | | _ \| |
|
|
|
|
.\" * / __| | | | |_) | |
|
|
|
|
.\" * | (__| |_| | _ <| |___
|
|
|
|
.\" * \___|\___/|_| \_\_____|
|
|
|
|
.\" *
|
2015-04-27 06:29:18 +08:00
|
|
|
.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
|
2006-03-22 06:30:03 +08:00
|
|
|
.\" *
|
|
|
|
.\" * 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 http://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.
|
|
|
|
.\" *
|
|
|
|
.\" **************************************************************************
|
2002-03-04 18:09:48 +08:00
|
|
|
.\"
|
2009-02-12 05:47:14 +08:00
|
|
|
.TH curl_easy_getinfo 3 "11 Feb 2009" "libcurl 7.19.4" "libcurl Manual"
|
2002-03-04 18:09:48 +08:00
|
|
|
.SH NAME
|
2003-11-04 21:27:28 +08:00
|
|
|
curl_easy_getinfo - extract information from a curl handle
|
2002-03-04 18:09:48 +08:00
|
|
|
.SH SYNOPSIS
|
|
|
|
.B #include <curl/curl.h>
|
2003-11-04 21:27:28 +08:00
|
|
|
|
|
|
|
.B "CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ... );"
|
|
|
|
|
2002-03-04 18:09:48 +08:00
|
|
|
.SH DESCRIPTION
|
|
|
|
Request internal information from the curl session with this function. The
|
2004-12-15 06:47:13 +08:00
|
|
|
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
|
2005-08-18 14:14:17 +08:00
|
|
|
accordingly and can be relied upon only if the function returns CURLE_OK. Use
|
2015-08-16 05:56:28 +08:00
|
|
|
this function AFTER a performed transfer if you want to get transfer related
|
2005-08-18 14:14:17 +08:00
|
|
|
data.
|
2004-08-25 04:36:38 +08:00
|
|
|
|
|
|
|
You should not free the memory returned by this function unless it is
|
2007-05-04 03:12:45 +08:00
|
|
|
explicitly mentioned below.
|
2002-03-04 18:09:48 +08:00
|
|
|
.SH AVAILABLE INFORMATION
|
2004-03-25 05:40:45 +08:00
|
|
|
The following information can be extracted:
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_EFFECTIVE_URL
|
2015-08-31 21:27:58 +08:00
|
|
|
See \fICURLINFO_EFFECTIVE_URL(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_RESPONSE_CODE
|
2015-08-31 21:27:58 +08:00
|
|
|
See \fICURLINFO_RESPONSE_CODE(3)\fP
|
2004-12-22 20:31:55 +08:00
|
|
|
.IP CURLINFO_HTTP_CONNECTCODE
|
2015-08-31 21:27:58 +08:00
|
|
|
See \fICURLINFO_HTTP_CONNECTCODE(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_FILETIME
|
2015-08-31 21:27:58 +08:00
|
|
|
See \fICURLINFO_FILETIME(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_TOTAL_TIME
|
2015-08-31 21:27:58 +08:00
|
|
|
See \fICURLINFO_TOTAL_TIME(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_NAMELOOKUP_TIME
|
2015-08-31 21:27:58 +08:00
|
|
|
See \fICURLINFO_NAMELOOKUP_TIME(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_CONNECT_TIME
|
2015-08-31 21:27:58 +08:00
|
|
|
See \fICURLINFO_CONNECT_TIME(3)\fP
|
2008-07-03 14:56:03 +08:00
|
|
|
.IP CURLINFO_APPCONNECT_TIME
|
2015-08-31 21:27:58 +08:00
|
|
|
See \fICURLINFO_APPCONNECT_TIME(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_PRETRANSFER_TIME
|
2015-08-31 21:27:58 +08:00
|
|
|
See \fICURLINFO_PRETRANSFER_TIME(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_STARTTRANSFER_TIME
|
2015-08-31 21:27:58 +08:00
|
|
|
See \fICURLINFO_STARTTRANSFER_TIME(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_REDIRECT_TIME
|
2015-08-31 21:27:58 +08:00
|
|
|
See \fICURLINFO_REDIRECT_TIME(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_REDIRECT_COUNT
|
2015-08-31 21:27:58 +08:00
|
|
|
See \fICURLINFO_REDIRECT_COUNT(3)\fP
|
2008-05-01 05:20:08 +08:00
|
|
|
.IP CURLINFO_REDIRECT_URL
|
2015-08-31 21:27:58 +08:00
|
|
|
See \fICURLINFO_REDIRECT_URL(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_SIZE_UPLOAD
|
2015-08-31 21:27:58 +08:00
|
|
|
See \fICURLINFO_SIZE_UPLOAD(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_SIZE_DOWNLOAD
|
2015-08-31 21:27:58 +08:00
|
|
|
See \fICURLINFO_SIZE_DOWNLOAD(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_SPEED_DOWNLOAD
|
2015-08-31 21:27:58 +08:00
|
|
|
See \fICURLINFO_SPEED_DOWNLOAD(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_SPEED_UPLOAD
|
2015-08-31 21:27:58 +08:00
|
|
|
See \fICURLINFO_SPEED_UPLOAD(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_HEADER_SIZE
|
2015-09-02 06:00:53 +08:00
|
|
|
See \fICURLINFO_HEADER_SIZE(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_REQUEST_SIZE
|
2015-09-02 06:00:53 +08:00
|
|
|
See \fICURLINFO_REQUEST_SIZE(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_SSL_VERIFYRESULT
|
2015-09-02 06:00:53 +08:00
|
|
|
See \fICURLINFO_SSL_VERIFYRESULT(3)\fP
|
2004-12-14 04:14:04 +08:00
|
|
|
.IP CURLINFO_SSL_ENGINES
|
2015-09-02 06:00:53 +08:00
|
|
|
See \fICURLINFO_SSL_ENGINES(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_CONTENT_LENGTH_DOWNLOAD
|
2015-09-02 06:00:53 +08:00
|
|
|
See \fICURLINFO_CONTENT_LENGTH_DOWNLOAD(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_CONTENT_LENGTH_UPLOAD
|
2015-09-02 06:00:53 +08:00
|
|
|
See \fICURLINFO_CONTENT_LENGTH_UPLOAD(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_CONTENT_TYPE
|
2015-09-02 06:00:53 +08:00
|
|
|
See \fICURLINFO_CONTENT_TYPE(3)\fP
|
2003-11-04 21:27:28 +08:00
|
|
|
.IP CURLINFO_PRIVATE
|
2015-09-02 06:00:53 +08:00
|
|
|
See \fICURLINFO_PRIVATE(3)\fP
|
2003-12-18 21:33:14 +08:00
|
|
|
.IP CURLINFO_HTTPAUTH_AVAIL
|
|
|
|
Pass a pointer to a long to receive a bitmask indicating the authentication
|
|
|
|
method(s) available. The meaning of the bits is explained in the
|
2014-06-22 02:21:47 +08:00
|
|
|
\fICURLOPT_HTTPAUTH(3)\fP option for \fIcurl_easy_setopt(3)\fP. (Added in
|
|
|
|
7.10.8)
|
2003-12-18 21:33:14 +08:00
|
|
|
.IP CURLINFO_PROXYAUTH_AVAIL
|
|
|
|
Pass a pointer to a long to receive a bitmask indicating the authentication
|
2004-03-25 05:40:45 +08:00
|
|
|
method(s) available for your proxy authentication. (Added in 7.10.8)
|
2004-10-01 05:01:23 +08:00
|
|
|
.IP CURLINFO_OS_ERRNO
|
|
|
|
Pass a pointer to a long to receive the errno variable from a connect failure.
|
2009-07-15 19:49:12 +08:00
|
|
|
Note that the value is only set on failure, it is not reset upon a
|
2013-01-28 21:22:48 +08:00
|
|
|
successful operation. (Added in 7.12.2)
|
2004-10-19 23:30:08 +08:00
|
|
|
.IP CURLINFO_NUM_CONNECTS
|
|
|
|
Pass a pointer to a long to receive how many new connections libcurl had to
|
|
|
|
create to achieve the previous transfer (only the successful connects are
|
|
|
|
counted). Combined with \fICURLINFO_REDIRECT_COUNT\fP you are able to know
|
|
|
|
how many times libcurl successfully reused existing connection(s) or not. See
|
|
|
|
the Connection Options of \fIcurl_easy_setopt(3)\fP to see how libcurl tries
|
|
|
|
to make persistent connections to save time. (Added in 7.12.3)
|
2008-06-07 01:33:35 +08:00
|
|
|
.IP CURLINFO_PRIMARY_IP
|
|
|
|
Pass a pointer to a char pointer to receive the pointer to a zero-terminated
|
|
|
|
string holding the IP address of the most recent connection done with this
|
|
|
|
\fBcurl\fP handle. This string may be IPv6 if that's enabled. Note that you
|
|
|
|
get a pointer to a memory area that will be re-used at next request so you
|
2008-06-09 06:00:42 +08:00
|
|
|
need to copy the string if you want to keep the information. (Added in 7.19.0)
|
2010-06-05 06:29:09 +08:00
|
|
|
.IP CURLINFO_PRIMARY_PORT
|
|
|
|
Pass a pointer to a long to receive the destination port of the most recent
|
|
|
|
connection done with this \fBcurl\fP handle. (Added in 7.21.0)
|
|
|
|
.IP CURLINFO_LOCAL_IP
|
|
|
|
Pass a pointer to a char pointer to receive the pointer to a zero-terminated
|
|
|
|
string holding the local (source) IP address of the most recent connection done
|
|
|
|
with this \fBcurl\fP handle. This string may be IPv6 if that's enabled. The
|
|
|
|
same restrictions apply as to \fICURLINFO_PRIMARY_IP\fP. (Added in 7.21.0)
|
|
|
|
.IP CURLINFO_LOCAL_PORT
|
|
|
|
Pass a pointer to a long to receive the local (source) port of the most recent
|
|
|
|
connection done with this \fBcurl\fP handle. (Added in 7.21.0)
|
2005-07-28 06:17:14 +08:00
|
|
|
.IP CURLINFO_COOKIELIST
|
|
|
|
Pass a pointer to a 'struct curl_slist *' to receive a linked-list of all
|
|
|
|
cookies cURL knows (expired ones, too). Don't forget to
|
2005-08-25 15:06:15 +08:00
|
|
|
\fIcurl_slist_free_all(3)\fP the list after it has been used. If there are no
|
|
|
|
cookies (cookies for the handle have not been enabled or simply none have been
|
2015-09-03 14:35:11 +08:00
|
|
|
received) 'struct curl_slist *' will be set to point to NULL.
|
|
|
|
|
|
|
|
Since 7.43.0 cookies that were imported in the Set-Cookie format without a
|
|
|
|
domain name are not exported by this option.
|
|
|
|
|
|
|
|
(Added in 7.14.1)
|
2006-02-12 06:35:16 +08:00
|
|
|
.IP CURLINFO_LASTSOCKET
|
|
|
|
Pass a pointer to a long to receive the last socket used by this curl
|
|
|
|
session. If the socket is no longer valid, -1 is returned. When you finish
|
|
|
|
working with the socket, you must call curl_easy_cleanup() as usual and let
|
|
|
|
libcurl close the socket and cleanup other resources associated with the
|
2014-06-22 02:21:47 +08:00
|
|
|
handle. This is typically used in combination with
|
|
|
|
\fICURLOPT_CONNECT_ONLY(3)\fP. (Added in 7.15.2)
|
2010-07-31 05:08:17 +08:00
|
|
|
|
2015-08-21 16:29:05 +08:00
|
|
|
NOTE: this API is deprecated since it is not working on win64 where the SOCKET
|
|
|
|
type is 64 bits large while its 'long' is 32 bits. Use the
|
|
|
|
\fICURLINFO_ACTIVESOCKET\fP instead, if possible.
|
|
|
|
.IP CURLINFO_ACTIVESOCKET
|
|
|
|
Pass a pointer to a curl_socket_t to receive the active socket used by this
|
|
|
|
curl session. If the socket is no longer valid, -1 is returned. When you
|
|
|
|
finish working with the socket, you must call curl_easy_cleanup() as usual and
|
|
|
|
let libcurl close the socket and cleanup other resources associated with the
|
|
|
|
handle. This is typically used in combination with
|
|
|
|
\fICURLOPT_CONNECT_ONLY(3)\fP.
|
|
|
|
|
|
|
|
NOTE: this is meant as a cross-platform, safe alternative to
|
|
|
|
\fICURLINFO_LASTSOCKET\fP, which does not work on win64.
|
2006-03-22 06:30:03 +08:00
|
|
|
.IP CURLINFO_FTP_ENTRY_PATH
|
2009-04-17 20:55:09 +08:00
|
|
|
Pass a pointer to a char pointer to receive a pointer to a string holding the
|
|
|
|
path of the entry path. That is the initial path libcurl ended up in when
|
|
|
|
logging on to the remote FTP server. This stores a NULL as pointer if
|
|
|
|
something is wrong. (Added in 7.15.4)
|
2010-12-31 06:49:03 +08:00
|
|
|
|
|
|
|
Also works for SFTP since 7.21.4
|
2008-10-16 19:35:19 +08:00
|
|
|
.IP CURLINFO_CERTINFO
|
|
|
|
Pass a pointer to a 'struct curl_certinfo *' and you'll get it set to point to
|
|
|
|
struct that holds a number of linked lists with info about the certificate
|
2014-06-22 02:21:47 +08:00
|
|
|
chain, assuming you had \fICURLOPT_CERTINFO(3)\fP enabled when the previous
|
|
|
|
request was done. The struct reports how many certs it found and then you can
|
|
|
|
extract info for each of those certs by following the linked lists. The info
|
|
|
|
chain is provided in a series of data in the format "name:content" where the
|
|
|
|
content is for the specific named data. See also the certinfo.c example. NOTE:
|
2014-10-13 22:33:47 +08:00
|
|
|
this option is only available in libcurl built with OpenSSL, NSS or GSKit
|
|
|
|
support. (Added in 7.19.1)
|
2013-11-18 03:49:16 +08:00
|
|
|
.IP CURLINFO_TLS_SESSION
|
2014-07-30 17:00:47 +08:00
|
|
|
Pass a pointer to a 'struct curl_tlssessioninfo *'. The pointer will be
|
|
|
|
initialized to refer to a 'struct curl_tlssessioninfo *' that will contain an
|
|
|
|
enum indicating the SSL library used for the handshake and the respective
|
|
|
|
internal TLS session structure of this underlying SSL library.
|
2013-11-18 03:49:16 +08:00
|
|
|
|
|
|
|
This may then be used to extract certificate information in a format
|
|
|
|
convenient for further processing, such as manual validation. NOTE: this
|
|
|
|
option may not be available for all SSL backends; unsupported SSL backends
|
|
|
|
will return 'CURLSSLBACKEND_NONE' to indicate that they are not supported;
|
|
|
|
this does not mean that no SSL backend was used. (Added in 7.34.0)
|
|
|
|
|
2015-04-27 06:29:18 +08:00
|
|
|
.nf
|
|
|
|
struct curl_tlssessioninfo {
|
|
|
|
curl_sslbackend backend;
|
|
|
|
void *internals;
|
|
|
|
};
|
|
|
|
.fi
|
|
|
|
|
|
|
|
The \fIinternals\fP struct member will point to a TLS library specific pointer
|
|
|
|
with the following underlying types:
|
|
|
|
.RS
|
|
|
|
.IP OpenSSL
|
|
|
|
SSL_CTX *
|
|
|
|
.IP GnuTLS
|
|
|
|
gnutls_session_t
|
|
|
|
.IP NSS
|
|
|
|
PRFileDesc *
|
|
|
|
.IP gskit
|
|
|
|
gsk_handle
|
|
|
|
.RE
|
|
|
|
|
2009-02-12 05:47:14 +08:00
|
|
|
.IP CURLINFO_CONDITION_UNMET
|
|
|
|
Pass a pointer to a long to receive the number 1 if the condition provided in
|
2014-06-22 02:21:47 +08:00
|
|
|
the previous request didn't match (see \fICURLOPT_TIMECONDITION(3)\fP). Alas,
|
|
|
|
if this returns a 1 you know that the reason you didn't get data in return is
|
2009-02-12 05:47:14 +08:00
|
|
|
because it didn't fulfill the condition. The long ths argument points to will
|
|
|
|
get a zero stored if the condition instead was met. (Added in 7.19.4)
|
2010-01-21 21:58:30 +08:00
|
|
|
.IP CURLINFO_RTSP_SESSION_ID
|
|
|
|
Pass a pointer to a char pointer to receive a pointer to a string holding the
|
|
|
|
most recent RTSP Session ID.
|
|
|
|
|
|
|
|
Applications wishing to resume an RTSP session on another connection should
|
2013-06-22 21:21:19 +08:00
|
|
|
retrieve this info before closing the active connection.
|
2010-01-21 21:58:30 +08:00
|
|
|
.IP CURLINFO_RTSP_CLIENT_CSEQ
|
|
|
|
Pass a pointer to a long to receive the next CSeq that will be used by the
|
2010-02-15 03:40:18 +08:00
|
|
|
application.
|
2010-01-21 21:58:30 +08:00
|
|
|
.IP CURLINFO_RTSP_SERVER_CSEQ
|
|
|
|
Pass a pointer to a long to receive the next server CSeq that will be expected
|
2010-02-15 03:40:18 +08:00
|
|
|
by the application.
|
2010-01-21 21:58:30 +08:00
|
|
|
|
|
|
|
\fI(NOTE: listening for server initiated requests is currently
|
|
|
|
unimplemented).\fP
|
|
|
|
|
|
|
|
Applications wishing to resume an RTSP session on another connection should
|
2013-06-22 21:21:19 +08:00
|
|
|
retrieve this info before closing the active connection.
|
2010-01-21 21:58:30 +08:00
|
|
|
.IP CURLINFO_RTSP_CSEQ_RECV
|
|
|
|
Pass a pointer to a long to receive the most recently received CSeq from the
|
|
|
|
server. If your application encounters a \fICURLE_RTSP_CSEQ_ERROR\fP then you
|
|
|
|
may wish to troubleshoot and/or fix the CSeq mismatch by peeking at this value.
|
2005-10-06 16:58:44 +08:00
|
|
|
.SH TIMES
|
2009-05-07 17:31:24 +08:00
|
|
|
.nf
|
2005-10-06 16:58:44 +08:00
|
|
|
An overview of the six time values available from curl_easy_getinfo()
|
|
|
|
|
2006-03-14 03:44:36 +08:00
|
|
|
curl_easy_perform()
|
2005-10-06 16:58:44 +08:00
|
|
|
|
|
2008-07-03 14:56:03 +08:00
|
|
|
|--NAMELOOKUP
|
|
|
|
|--|--CONNECT
|
|
|
|
|--|--|--APPCONNECT
|
|
|
|
|--|--|--|--PRETRANSFER
|
|
|
|
|--|--|--|--|--STARTTRANSFER
|
|
|
|
|--|--|--|--|--|--TOTAL
|
|
|
|
|--|--|--|--|--|--REDIRECT
|
2009-05-07 17:31:24 +08:00
|
|
|
.fi
|
2008-07-03 14:56:03 +08:00
|
|
|
.IP NAMELOOKUP
|
2005-10-06 17:03:36 +08:00
|
|
|
\fICURLINFO_NAMELOOKUP_TIME\fP. The time it took from the start until the name
|
2005-10-06 16:58:44 +08:00
|
|
|
resolving was completed.
|
2008-07-03 14:56:03 +08:00
|
|
|
.IP CONNECT
|
2005-10-06 17:03:36 +08:00
|
|
|
\fICURLINFO_CONNECT_TIME\fP. The time it took from the start until the connect
|
|
|
|
to the remote host (or proxy) was completed.
|
2008-07-03 14:56:03 +08:00
|
|
|
.IP APPCONNECT
|
|
|
|
\fICURLINFO_APPCONNECT_TIME\fP. The time it took from the start until the SSL
|
|
|
|
connect/handshake with the remote host was completed. (Added in in 7.19.0)
|
|
|
|
.IP PRETRANSFER
|
2005-10-06 17:03:36 +08:00
|
|
|
\fICURLINFO_PRETRANSFER_TIME\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.
|
2008-07-03 14:56:03 +08:00
|
|
|
.IP STARTTRANSFER
|
2005-10-06 17:03:36 +08:00
|
|
|
\fICURLINFO_STARTTRANSFER_TIME\fP. The time it took from the start until the
|
2011-05-04 04:47:56 +08:00
|
|
|
first byte is received by libcurl.
|
2008-07-03 14:56:03 +08:00
|
|
|
.IP TOTAL
|
2006-06-08 19:06:26 +08:00
|
|
|
\fICURLINFO_TOTAL_TIME\fP. Total time of the previous request.
|
2008-07-03 14:56:03 +08:00
|
|
|
.IP REDIRECT
|
2005-10-06 17:03:36 +08:00
|
|
|
\fICURLINFO_REDIRECT_TIME\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.
|
2002-03-04 18:09:48 +08:00
|
|
|
.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)"
|