Annotation of embedaddon/curl/tests/libtest/lib556.c, revision 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>