Annotation of embedaddon/curl/tests/libtest/lib556.c, revision 1.1.1.1
1.1 misho 1: /***************************************************************************
2: * _ _ ____ _
3: * Project ___| | | | _ \| |
4: * / __| | | | |_) | |
5: * | (__| |_| | _ <| |___
6: * \___|\___/|_| \_\_____|
7: *
8: * Copyright (C) 1998 - 2019, 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 "warnless.h"
25: #include "memdebug.h"
26:
27: /* For Windows, mainly (may be moved in a config file?) */
28: #ifndef STDIN_FILENO
29: #define STDIN_FILENO 0
30: #endif
31: #ifndef STDOUT_FILENO
32: #define STDOUT_FILENO 1
33: #endif
34: #ifndef STDERR_FILENO
35: #define STDERR_FILENO 2
36: #endif
37:
38: int test(char *URL)
39: {
40: CURLcode res;
41: CURL *curl;
42:
43: if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
44: fprintf(stderr, "curl_global_init() failed\n");
45: return TEST_ERR_MAJOR_BAD;
46: }
47:
48: curl = curl_easy_init();
49: if(!curl) {
50: fprintf(stderr, "curl_easy_init() failed\n");
51: curl_global_cleanup();
52: return TEST_ERR_MAJOR_BAD;
53: }
54:
55: test_setopt(curl, CURLOPT_URL, URL);
56: test_setopt(curl, CURLOPT_CONNECT_ONLY, 1L);
57: test_setopt(curl, CURLOPT_VERBOSE, 1L);
58:
59: res = curl_easy_perform(curl);
60:
61: if(!res) {
62: /* we are connected, now get a HTTP document the raw way */
63: const char *request =
64: #ifdef CURL_DOES_CONVERSIONS
65: /* ASCII representation with escape sequences for non-ASCII platforms */
66: "\x47\x45\x54\x20\x2f\x35\x35\x36\x20\x48\x54\x54\x50\x2f\x31\x2e"
67: "\x32\x0d\x0a\x48\x6f\x73\x74\x3a\x20\x6e\x69\x6e\x6a\x61\x0d\x0a"
68: "\x0d\x0a";
69: #else
70: "GET /556 HTTP/1.2\r\n"
71: "Host: ninja\r\n\r\n";
72: #endif
73: size_t iolen = 0;
74:
75: res = curl_easy_send(curl, request, strlen(request), &iolen);
76:
77: if(!res) {
78: /* we assume that sending always work */
79:
80: do {
81: char buf[1024];
82: /* busy-read like crazy */
83: res = curl_easy_recv(curl, buf, sizeof(buf), &iolen);
84:
85: #ifdef TPF
86: sleep(1); /* avoid ctl-10 dump */
87: #endif
88:
89: if(iolen) {
90: /* send received stuff to stdout */
91: if(!write(STDOUT_FILENO, buf, iolen))
92: break;
93: }
94:
95: } while((res == CURLE_OK && iolen != 0) || (res == CURLE_AGAIN));
96: }
97:
98: if(iolen != 0)
99: res = TEST_ERR_FAILURE;
100: }
101:
102: test_cleanup:
103:
104: curl_easy_cleanup(curl);
105: curl_global_cleanup();
106:
107: return (int)res;
108: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>