aboutsummaryrefslogtreecommitdiff
path: root/tests/libtest/lib643.c
diff options
context:
space:
mode:
authorPatrick Monnerat <patrick@monnerat.net>2020-03-06 09:46:39 +0100
committerDaniel Stenberg <daniel@haxx.se>2020-03-07 23:26:00 +0100
commit96972ec1c00a142e3859efc82a06b0b810527da2 (patch)
treeb87cf6005d4815ee0ab7ff33f4e9d320e0d1cdad /tests/libtest/lib643.c
parent3dce9849be4f84df83ba342be24ce29f4fbe01d4 (diff)
mime: latch last read callback status.
In case a read callback returns a status (pause, abort, eof, error) instead of a byte count, drain the bytes read so far but remember this status for further processing. Takes care of not losing data when pausing, and properly resume a paused mime structure when requested. New tests 670-673 check unpausing cases, with easy or multi interface and mime or form api. Fixes #4813 Reported-by: MrdUkk on github
Diffstat (limited to 'tests/libtest/lib643.c')
-rw-r--r--tests/libtest/lib643.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/tests/libtest/lib643.c b/tests/libtest/lib643.c
index 7432dfce8..08c0f2e80 100644
--- a/tests/libtest/lib643.c
+++ b/tests/libtest/lib643.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2020, 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
@@ -41,11 +41,20 @@ struct WriteThis {
static size_t read_callback(char *ptr, size_t size, size_t nmemb, void *userp)
{
#ifdef LIB644
+ static int count = 0;
(void)ptr;
(void)size;
(void)nmemb;
(void)userp;
- return CURL_READFUNC_ABORT;
+ switch(count++) {
+ case 0: /* Return a single byte. */
+ *ptr = '\n';
+ return 1;
+ case 1: /* Request abort. */
+ return CURL_READFUNC_ABORT;
+ }
+ printf("Wrongly called >2 times\n");
+ exit(1); /* trigger major failure */
#else
struct WriteThis *pooh = (struct WriteThis *)userp;