## NAME

         curl_easy_getinfo  - Extract information from a curl session
         (added in 7.4)

## SYNOPSIS

         #include <curl/curl.h>

         CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ... );

## DESCRIPTION

         Request internal information from the curl session with this
         function.  The third argument MUST be a pointer to a long, a
         pointer  to a char * or a pointer to a double (as this docu
         mentation describes further down).  The data pointed-to will
         be  filled in accordingly and can be relied upon only if the
         function returns CURLE_OK.  This function is intended to get
         used  *AFTER*  a  performed  transfer, all results from this
         function are undefined until the transfer is completed.

## AVAILABLE INFORMATION

         These are informations that can be extracted:

         CURLINFO_EFFECTIVE_URL
                 Pass a pointer to a 'char *'  to  receive  the  last
                 used effective URL.

         CURLINFO_HTTP_CODE
                 Pass  a  pointer  to  a  long  to  receive  the last
                 received HTTP code.

         CURLINFO_FILETIME
                 Pass a pointer to a long to receive the remote  time
                 of  the retrieved document. If you get -1, it can be
                 because of many reasons (unknown, the  server  hides
                 it  or  the  server doesn't support the command that
                 tells document time etc) and the time of  the  docu
                 ment  is unknown. Note that you must tell the server
                 to collect this information before the  transfer  is
                 made,   by  using  the  CURLOPT_FILETIME  option  to
                 curl_easy_setopt(3). (Added in 7.5)

         CURLINFO_TOTAL_TIME
                 Pass a pointer to a  double  to  receive  the  total
                 transaction  time in seconds for the previous trans
                 fer.

         CURLINFO_NAMELOOKUP_TIME
                 Pass a pointer to a double to receive the  time,  in
                 seconds,  it  took  from  the  start  until the name
                 resolving was completed.

         CURLINFO_CONNECT_TIME
                 Pass a pointer to a double to receive the  time,  in
                 seconds, it took from the start until the connect to
                 the remote host (or proxy) was completed.

         CURLINFO_PRETRANSFER_TIME
                 Pass a pointer to a double to receive the  time,  in
                 seconds,  it  took  from  the  start  until the file
                 transfer is just about to begin. This  includes  all
                 pre-transfer commands and negotiations that are spe
                 cific to the particular protocol(s) involved.

         CURLINFO_STARTTRANSFER_TIME
                 Pass a pointer to a double to receive the  time,  in
                 seconds, it took from the start until the first byte
                 is  just  about  to  be  transfered.  This  includes
                 CURLINFO_PRETRANSFER_TIME  and  also  the  time  the
                 server needs to calculate the result.

         CURLINFO_SIZE_UPLOAD
                 Pass a pointer to a  double  to  receive  the  total
                 amount of bytes that were uploaded.

         CURLINFO_SIZE_DOWNLOAD
                 Pass  a  pointer  to  a  double to receive the total
                 amount of bytes that were downloaded.

         CURLINFO_SPEED_DOWNLOAD
                 Pass a pointer to a double to  receive  the  average
                 download  speed  that curl measured for the complete
                 download.

         CURLINFO_SPEED_UPLOAD
                 Pass a pointer to a double to  receive  the  average
                 upload  speed  that  curl  measured for the complete
                 upload.

         CURLINFO_HEADER_SIZE
                 Pass a pointer to a long to receive the  total  size
                 of all the headers received.

         CURLINFO_REQUEST_SIZE
                 Pass  a  pointer to a long to receive the total size
                 of the issued requests. This is so far only for HTTP
                 requests.  Note  that  this  may  be  more  than one
                 request if FOLLOWLOCATION is true.

         CURLINFO_SSL_VERIFYRESULT
                 Pass a pointer to a long to receive  the  result  of
                 the  certification  verification  that was requested
                 (using   the   CURLOPT_SSL_VERIFYPEER   option    to
                 curl_easy_setopt). (Added in 7.4.2)

         CURLINFO_CONTENT_LENGTH_DOWNLOAD
                 Pass  a  pointer to a double to receive the content-
                 length of the download. This is the value read  from
                 the Content-Length: field.  (Added in 7.6.1)

         CURLINFO_CONTENT_LENGTH_UPLOAD
                 Pass  a pointer to a double to receive the specified
                 size of the upload.  (Added in 7.6.1)

         CURLINFO_CONTENT_TYPE
                 Pass a pointer to a 'char *' to receive the content-
                 type  of  the  downloaded  object. This is the value
                 read from the Content-Type: field. If you get  NULL,
                 it  means  that  the server didn't send a valid Con
                 tent-Type header or that the protocol  used  doesn't
                 support this.  (Added in 7.9.4)

## RETURN VALUE

         If  the operation was successful, CURLE_OK is returned. Oth
         erwise an appropriate error code will be returned.

## SEE ALSO

         curl_easy_setopt(3)

## BUGS

         Surely there are some, you tell me!