1
/*****************************************************************************
3
* Project ___| | | | _ \| |
5
* | (__| |_| | _ <| |___
6
* \___|\___/|_| \_\_____|
8
* $Id: lib560.c,v 1.2 2008-11-12 22:26:06 danf Exp $
14
* Simply download a HTTPS file!
16
* This test was added after the HTTPS-using-multi-interface with OpenSSL
17
* regression of 7.19.1 to hopefully prevent this embarassing mistake from
18
* appearing again... Unfortunately the bug wasn't triggered by this test,
19
* which presumably is because the connect to a local server is too
20
* fast/different compared to the real/distant servers we saw the bug happen
28
int still_running; /* keep number of running handles */
30
http_handle = curl_easy_init();
32
return TEST_ERR_MAJOR_BAD;
35
curl_easy_setopt(http_handle, CURLOPT_URL, URL);
36
curl_easy_setopt(http_handle, CURLOPT_HEADER, 1L);
37
curl_easy_setopt(http_handle, CURLOPT_SSL_VERIFYPEER, 0L);
38
curl_easy_setopt(http_handle, CURLOPT_SSL_VERIFYHOST, 0L);
40
/* init a multi stack */
41
multi_handle = curl_multi_init();
43
curl_easy_cleanup(http_handle);
44
return TEST_ERR_MAJOR_BAD;
47
/* add the individual transfers */
48
curl_multi_add_handle(multi_handle, http_handle);
50
/* we start some action by calling perform right away */
51
while(CURLM_CALL_MULTI_PERFORM ==
52
curl_multi_perform(multi_handle, &still_running));
54
while(still_running) {
55
struct timeval timeout;
56
int rc; /* select() return code */
67
/* set a suitable timeout to play around with */
71
/* get file descriptors from the transfers */
72
curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
74
/* In a real-world program you OF COURSE check the return code of the
75
function calls, *and* you make sure that maxfd is bigger than -1 so
76
that the call to select() below makes sense! */
78
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
86
/* timeout or readable/writable sockets */
87
while(CURLM_CALL_MULTI_PERFORM ==
88
curl_multi_perform(multi_handle, &still_running));
93
curl_multi_cleanup(multi_handle);
95
curl_easy_cleanup(http_handle);