Annotation of embedaddon/curl/tests/libtest/lib1552.c, revision 1.1.1.1
1.1 misho 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: #include "test.h"
23:
24: #include "testutil.h"
25: #include "warnless.h"
26: #include "memdebug.h"
27:
28: #define TEST_HANG_TIMEOUT 60 * 1000
29:
30: int test(char *URL)
31: {
32: CURL *curls = NULL;
33: CURLM *multi = NULL;
34: int still_running;
35: int i = 0;
36: int res = 0;
37: CURLMsg *msg;
38: int counter = 3;
39:
40: start_test_timing();
41:
42: global_init(CURL_GLOBAL_ALL);
43:
44: multi_init(multi);
45:
46: easy_init(curls);
47:
48: easy_setopt(curls, CURLOPT_URL, URL);
49: easy_setopt(curls, CURLOPT_HEADER, 1L);
50: easy_setopt(curls, CURLOPT_VERBOSE, 1L);
51: easy_setopt(curls, CURLOPT_USERPWD, "u:s");
52:
53: multi_add_handle(multi, curls);
54:
55: multi_perform(multi, &still_running);
56:
57: abort_on_test_timeout();
58:
59: while(still_running && counter--) {
60: int num;
61: res = curl_multi_wait(multi, NULL, 0, TEST_HANG_TIMEOUT, &num);
62: if(res != CURLM_OK) {
63: printf("curl_multi_wait() returned %d\n", res);
64: res = TEST_ERR_MAJOR_BAD;
65: goto test_cleanup;
66: }
67:
68: abort_on_test_timeout();
69:
70: multi_perform(multi, &still_running);
71:
72: abort_on_test_timeout();
73: }
74:
75: msg = curl_multi_info_read(multi, &still_running);
76: if(msg)
77: /* this should now contain a result code from the easy handle,
78: get it */
79: i = msg->data.result;
80:
81: test_cleanup:
82:
83: /* undocumented cleanup sequence - type UA */
84:
85: curl_multi_cleanup(multi);
86: curl_easy_cleanup(curls);
87: curl_global_cleanup();
88:
89: if(res)
90: i = res;
91:
92: return i; /* return the final return code */
93: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>