diff options
| author | Patrick Monnerat <patrick@monnerat.net> | 2020-03-06 09:46:39 +0100 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2020-03-07 23:26:00 +0100 | 
| commit | 96972ec1c00a142e3859efc82a06b0b810527da2 (patch) | |
| tree | b87cf6005d4815ee0ab7ff33f4e9d320e0d1cdad /tests/libtest/lib643.c | |
| parent | 3dce9849be4f84df83ba342be24ce29f4fbe01d4 (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.c | 13 | 
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; | 
