Imported Upstream version 7.59.0
[platform/upstream/curl.git] / docs / libcurl / opts / CURLOPT_DNS_CACHE_TIMEOUT.3
1 .\" **************************************************************************
2 .\" *                                  _   _ ____  _
3 .\" *  Project                     ___| | | |  _ \| |
4 .\" *                             / __| | | | |_) | |
5 .\" *                            | (__| |_| |  _ <| |___
6 .\" *                             \___|\___/|_| \_\_____|
7 .\" *
8 .\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
9 .\" *
10 .\" * This software is licensed as described in the file COPYING, which
11 .\" * you should have received as part of this distribution. The terms
12 .\" * are also available at https://curl.haxx.se/docs/copyright.html.
13 .\" *
14 .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
15 .\" * copies of the Software, and permit persons to whom the Software is
16 .\" * furnished to do so, under the terms of the COPYING file.
17 .\" *
18 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19 .\" * KIND, either express or implied.
20 .\" *
21 .\" **************************************************************************
22 .\"
23 .TH CURLOPT_DNS_CACHE_TIMEOUT 3 "December 09, 2017" "libcurl 7.59.0" "curl_easy_setopt options"
24
25 .SH NAME
26 CURLOPT_DNS_CACHE_TIMEOUT \- set life-time for DNS cache entries
27 .SH SYNOPSIS
28 #include <curl/curl.h>
29
30 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_CACHE_TIMEOUT, long age);
31 .SH DESCRIPTION
32 Pass a long, this sets the timeout in seconds. Name resolves will be kept in
33 memory and used for this number of seconds. Set to zero to completely disable
34 caching, or set to -1 to make the cached entries remain forever. By default,
35 libcurl caches this info for 60 seconds.
36
37 The name resolve functions of various libc implementations don't re-read name
38 server information unless explicitly told so (for example, by calling
39 \fIres_init(3)\fP). This may cause libcurl to keep using the older server even
40 if DHCP has updated the server info, and this may look like a DNS cache issue
41 to the casual libcurl-app user.
42
43 Note that DNS entries have a "TTL" property but libcurl doesn't use that. This
44 DNS cache timeout is entirely speculative that a name will resolve to the same
45 address for a certain small amount of time into the future.
46 .SH DEFAULT
47 60
48 .SH PROTOCOLS
49 All
50 .SH EXAMPLE
51 .nf
52 CURL *curl = curl_easy_init();
53 if(curl) {
54   curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/foo.bin");
55
56   /* only reuse addresses for a very short time */
57   curl_easy_setopt(curl, CURLOPT_DNS_CACHE_TIMEOUT, 2L);
58
59   ret = curl_easy_perform(curl);
60
61   /* in this second request, the cache will not be used if more than
62      two seconds have passed since the previous name resolve */
63   ret = curl_easy_perform(curl);
64
65   curl_easy_cleanup(curl);
66 }
67 .fi
68 .SH AVAILABILITY
69 Always
70 .SH RETURN VALUE
71 Returns CURLE_OK
72 .SH "SEE ALSO"
73 .BR CURLOPT_DNS_USE_GLOBAL_CACHE "(3), " CURLOPT_DNS_SERVERS "(3), "
74 .BR CURLOPT_RESOLVE "(3), "