Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "test.h"
00023
00024 #include "testutil.h"
00025 #include "warnless.h"
00026 #include "memdebug.h"
00027
00028 #define TEST_HANG_TIMEOUT 60 * 1000
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 int test(char *URL)
00039 {
00040 CURL *c = NULL;
00041 CURLM *m = NULL;
00042 int res = 0;
00043 int running;
00044
00045 start_test_timing();
00046
00047 global_init(CURL_GLOBAL_ALL);
00048
00049 easy_init(c);
00050
00051 easy_setopt(c, CURLOPT_PROXY, libtest_arg2);
00052 easy_setopt(c, CURLOPT_URL, URL);
00053 easy_setopt(c, CURLOPT_USERPWD, "test:ing");
00054 easy_setopt(c, CURLOPT_PROXYUSERPWD, "test:ing");
00055 easy_setopt(c, CURLOPT_HTTPPROXYTUNNEL, 1L);
00056 easy_setopt(c, CURLOPT_HEADER, 1L);
00057 easy_setopt(c, CURLOPT_VERBOSE, 1L);
00058
00059 multi_init(m);
00060
00061 multi_add_handle(m, c);
00062
00063 for(;;) {
00064 struct timeval interval;
00065 fd_set rd, wr, exc;
00066 int maxfd = -99;
00067
00068 interval.tv_sec = 1;
00069 interval.tv_usec = 0;
00070
00071 multi_perform(m, &running);
00072
00073 abort_on_test_timeout();
00074
00075 if(!running)
00076 break;
00077
00078 FD_ZERO(&rd);
00079 FD_ZERO(&wr);
00080 FD_ZERO(&exc);
00081
00082 multi_fdset(m, &rd, &wr, &exc, &maxfd);
00083
00084
00085
00086 select_test(maxfd+1, &rd, &wr, &exc, &interval);
00087
00088 abort_on_test_timeout();
00089 }
00090
00091 test_cleanup:
00092
00093
00094
00095 curl_multi_remove_handle(m, c);
00096 curl_multi_cleanup(m);
00097 curl_easy_cleanup(c);
00098 curl_global_cleanup();
00099
00100 return res;
00101 }
00102