Return to lib1512.c CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / curl / tests / libtest |
1.1 ! misho 1: /*************************************************************************** ! 2: * _ _ ____ _ ! 3: * Project ___| | | | _ \| | ! 4: * / __| | | | |_) | | ! 5: * | (__| |_| | _ <| |___ ! 6: * \___|\___/|_| \_\_____| ! 7: * ! 8: * Copyright (C) 2013 - 2018, Linus Nielsen Feltzing <linus@haxx.se> ! 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: /* ! 24: * Use global DNS cache (while deprecated it should still work), populate it ! 25: * with CURLOPT_RESOLVE in the first request and then make sure a subsequent ! 26: * easy transfer finds and uses the populated stuff. ! 27: */ ! 28: ! 29: #include "test.h" ! 30: ! 31: #include "memdebug.h" ! 32: ! 33: #define NUM_HANDLES 2 ! 34: ! 35: int test(char *URL) ! 36: { ! 37: int res = 0; ! 38: CURL *curl[NUM_HANDLES] = {NULL, NULL}; ! 39: char *port = libtest_arg3; ! 40: char *address = libtest_arg2; ! 41: char dnsentry[256]; ! 42: struct curl_slist *slist = NULL; ! 43: int i; ! 44: char target_url[256]; ! 45: (void)URL; /* URL is setup in the code */ ! 46: ! 47: if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) { ! 48: fprintf(stderr, "curl_global_init() failed\n"); ! 49: return TEST_ERR_MAJOR_BAD; ! 50: } ! 51: ! 52: msnprintf(dnsentry, sizeof(dnsentry), "server.example.curl:%s:%s", ! 53: port, address); ! 54: printf("%s\n", dnsentry); ! 55: slist = curl_slist_append(slist, dnsentry); ! 56: ! 57: /* get NUM_HANDLES easy handles */ ! 58: for(i = 0; i < NUM_HANDLES; i++) { ! 59: /* get an easy handle */ ! 60: easy_init(curl[i]); ! 61: /* specify target */ ! 62: msnprintf(target_url, sizeof(target_url), ! 63: "http://server.example.curl:%s/path/1512%04i", ! 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 NUM_HANDLES transfers */ ! 79: for(i = 0; (i < NUM_HANDLES) && !res; i++) ! 80: res = curl_easy_perform(curl[i]); ! 81: ! 82: test_cleanup: ! 83: ! 84: curl_easy_cleanup(curl[0]); ! 85: curl_easy_cleanup(curl[1]); ! 86: curl_slist_free_all(slist); ! 87: curl_global_cleanup(); ! 88: ! 89: return res; ! 90: }