1 /*****************************************************************************
3 * Project ___| | | | _ \| |
5 * | (__| |_| | _ <| |___
6 * \___|\___/|_| \_\_____|
16 #define MAIN_LOOP_HANG_TIMEOUT 90 * 1000
17 #define MULTI_PERFORM_HANG_TIMEOUT 60 * 1000
20 * Get a single URL without select().
29 struct timeval mp_start;
30 char mp_timedout = FALSE;
32 if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
33 fprintf(stderr, "curl_global_init() failed\n");
34 return TEST_ERR_MAJOR_BAD;
37 if ((c = curl_easy_init()) == NULL) {
38 fprintf(stderr, "curl_easy_init() failed\n");
39 curl_global_cleanup();
40 return TEST_ERR_MAJOR_BAD;
43 test_setopt(c, CURLOPT_URL, URL);
45 if ((m = curl_multi_init()) == NULL) {
46 fprintf(stderr, "curl_multi_init() failed\n");
48 curl_global_cleanup();
49 return TEST_ERR_MAJOR_BAD;
52 if ((res = (int)curl_multi_add_handle(m, c)) != CURLM_OK) {
53 fprintf(stderr, "curl_multi_add_handle() failed, "
54 "with code %d\n", res);
55 curl_multi_cleanup(m);
57 curl_global_cleanup();
58 return TEST_ERR_MAJOR_BAD;
62 mp_start = tutil_tvnow();
65 res = (int)curl_multi_perform(m, &running);
66 if (tutil_tvdiff(tutil_tvnow(), mp_start) >
67 MULTI_PERFORM_HANG_TIMEOUT) {
72 fprintf(stderr, "nothing left running.\n");
78 if (mp_timedout) fprintf(stderr, "mp_timedout\n");
79 fprintf(stderr, "ABORTING TEST, since it seems "
80 "that it would have run forever.\n");
81 res = TEST_ERR_RUNS_FOREVER;
87 curl_multi_remove_handle(m, c);
88 curl_multi_cleanup(m);
91 curl_global_cleanup();