]> granicus.if.org Git - curl/commitdiff
lib555: drop text conversion and encode data as ascii codes
authorPatrick Monnerat <patrick@monnerat.net>
Fri, 26 Jan 2018 16:45:20 +0000 (17:45 +0100)
committerPatrick Monnerat <patrick@monnerat.net>
Fri, 26 Jan 2018 16:45:20 +0000 (17:45 +0100)
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
tests/libtest/lib555.c

index 3aa2ef14af8bedec787d9027227c74ef7fa4d273..18bbc43c055ed3b3166469696462fc7480570b43 100644 (file)
@@ -106,10 +106,6 @@ chkhostname curlhost
 <strip>
 ^User-Agent: curl/.*
 </strip>
-<strippart>
-# 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)
-</strippart>
 <protocol>
 POST http://test.remote.example.com/path/555 HTTP/1.1\r
 Host: test.remote.example.com\r
index fc71bb64371bf369c35174bb8e33b59ff3bb87cb..c887b56f0b8a0daa01cef78aa5e856dbf759cb89 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #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,