From bd5b9e50ce10e75048c3f584b2c7784d31504f0c Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Fri, 26 Jan 2018 17:45:20 +0100 Subject: lib555: drop text conversion and encode data as ascii codes If CURL_DOES_CONVERSION is enabled, uploaded LFs are mapped to CRLFs, giving a result that is different from what is expected. This commit avoids using CURLOPT_TRANSFERTEXT and directly encodes data to upload in ascii. Bug: https://github.com/curl/curl/pull/1872 --- tests/data/test555 | 4 ---- tests/libtest/lib555.c | 24 ++++++++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/tests/data/test555 b/tests/data/test555 index 3aa2ef14a..18bbc43c0 100644 --- a/tests/data/test555 +++ b/tests/data/test555 @@ -106,10 +106,6 @@ chkhostname curlhost ^User-Agent: curl/.* - -# remove CR that CURLOPT_TRANSFERTEXT added, when CharConv enabled: -s/^(this is the blurb we want to upload)\r\n/$1\n/ if($has_charconv) - POST http://test.remote.example.com/path/555 HTTP/1.1 Host: test.remote.example.com diff --git a/tests/libtest/lib555.c b/tests/libtest/lib555.c index fc71bb643..c887b56f0 100644 --- a/tests/libtest/lib555.c +++ b/tests/libtest/lib555.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2018, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -35,7 +35,15 @@ #define TEST_HANG_TIMEOUT 60 * 1000 -#define UPLOADTHIS "this is the blurb we want to upload\n" +static const char uploadthis[] = +#ifdef CURL_DOES_CONVERSIONS + /* ASCII representation with escape sequences for non-ASCII platforms */ + "\x74\x68\x69\x73\x20\x69\x73\x20\x74\x68\x65\x20\x62\x6c\x75\x72" + "\x62\x20\x77\x65\x20\x77\x61\x6e\x74\x20\x74\x6f\x20\x75\x70\x6c" + "\x6f\x61\x64\x0a"; +#else + "this is the blurb we want to upload\n"; +#endif static size_t readcallback(void *ptr, size_t size, @@ -51,10 +59,10 @@ static size_t readcallback(void *ptr, } (*counter)++; /* bump */ - if(size * nmemb > strlen(UPLOADTHIS)) { + if(size * nmemb > strlen(uploadthis)) { fprintf(stderr, "READ!\n"); - strcpy(ptr, UPLOADTHIS); - return strlen(UPLOADTHIS); + strcpy(ptr, uploadthis); + return strlen(uploadthis); } fprintf(stderr, "READ NOT FINE!\n"); return 0; @@ -98,13 +106,9 @@ int test(char *URL) easy_setopt(curl, CURLOPT_READDATA, &counter); /* We CANNOT do the POST fine without setting the size (or choose chunked)! */ - easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(UPLOADTHIS)); + easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(uploadthis)); easy_setopt(curl, CURLOPT_POST, 1L); -#ifdef CURL_DOES_CONVERSIONS - /* Convert the POST data to ASCII. */ - easy_setopt(curl, CURLOPT_TRANSFERTEXT, 1L); -#endif easy_setopt(curl, CURLOPT_PROXY, libtest_arg2); easy_setopt(curl, CURLOPT_PROXYUSERPWD, libtest_arg3); easy_setopt(curl, CURLOPT_PROXYAUTH, -- cgit v1.2.3