Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/pkg
Path: blob/main/external/curl/tests/libtest/lib1512.c
2654 views
1
/***************************************************************************
2
* _ _ ____ _
3
* Project ___| | | | _ \| |
4
* / __| | | | |_) | |
5
* | (__| |_| | _ <| |___
6
* \___|\___/|_| \_\_____|
7
*
8
* Copyright (C) Linus Nielsen Feltzing <[email protected]>
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.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
* SPDX-License-Identifier: curl
22
*
23
***************************************************************************/
24
25
/*
26
* Use global DNS cache (while deprecated it should still work), populate it
27
* with CURLOPT_RESOLVE in the first request and then make sure a subsequent
28
* easy transfer finds and uses the populated stuff.
29
*/
30
31
#include "first.h"
32
33
#include "memdebug.h"
34
35
static CURLcode test_lib1512(const char *URL)
36
{
37
CURLcode res = CURLE_OK;
38
CURL *curl[2] = {NULL, NULL};
39
const char *port = libtest_arg3;
40
const char *address = libtest_arg2;
41
char dnsentry[256];
42
struct curl_slist *slist = NULL;
43
size_t i;
44
char target_url[256];
45
(void)URL;
46
47
if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
48
curl_mfprintf(stderr, "curl_global_init() failed\n");
49
return TEST_ERR_MAJOR_BAD;
50
}
51
52
curl_msnprintf(dnsentry, sizeof(dnsentry), "server.example.curl:%s:%s",
53
port, address);
54
curl_mprintf("%s\n", dnsentry);
55
slist = curl_slist_append(slist, dnsentry);
56
57
/* get each easy handle */
58
for(i = 0; i < CURL_ARRAYSIZE(curl); i++) {
59
/* get an easy handle */
60
easy_init(curl[i]);
61
/* specify target */
62
curl_msnprintf(target_url, sizeof(target_url),
63
"http://server.example.curl:%s/path/1512%04zu",
64
port, i + 1);
65
target_url[sizeof(target_url) - 1] = '\0';
66
easy_setopt(curl[i], CURLOPT_URL, target_url);
67
/* go verbose */
68
easy_setopt(curl[i], CURLOPT_VERBOSE, 1L);
69
/* include headers */
70
easy_setopt(curl[i], CURLOPT_HEADER, 1L);
71
72
easy_setopt(curl[i], CURLOPT_DNS_USE_GLOBAL_CACHE, 1L);
73
}
74
75
/* make the first one populate the GLOBAL cache */
76
easy_setopt(curl[0], CURLOPT_RESOLVE, slist);
77
78
/* run each transfer */
79
for(i = 0; (i < CURL_ARRAYSIZE(curl)) && !res; i++) {
80
res = curl_easy_perform(curl[i]);
81
if(res)
82
goto test_cleanup;
83
}
84
85
test_cleanup:
86
87
curl_easy_cleanup(curl[0]);
88
curl_easy_cleanup(curl[1]);
89
curl_slist_free_all(slist);
90
curl_global_cleanup();
91
92
return res;
93
}
94
95