From 891ef341b329ab01f27d2375157de662ec1eb9b8 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Fri, 14 Mar 2014 15:44:18 +0100 Subject: [PATCH] chunked-encoding: provide a readable error string for chunked errors --- lib/http_chunks.c | 21 +++++++++++++++++++++ lib/http_chunks.h | 3 ++- lib/transfer.c | 2 +- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/lib/http_chunks.c b/lib/http_chunks.c index 83e3f0eec..61a6098a7 100644 --- a/lib/http_chunks.c +++ b/lib/http_chunks.c @@ -361,4 +361,25 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn, } return CHUNKE_OK; } + +const char *Curl_chunked_strerror(CHUNKcode code) +{ + switch (code) { + default: + return "OK"; + case CHUNKE_TOO_LONG_HEX: + return "Too long hexadecimal number"; + case CHUNKE_ILLEGAL_HEX: + return "Illegal or missing hexadecimal sequence"; + case CHUNKE_BAD_CHUNK: + return "Malformed encoding found"; + case CHUNKE_WRITE_ERROR: + return "Write error"; + case CHUNKE_BAD_ENCODING: + return "Bad content-encoding found"; + case CHUNKE_OUT_OF_MEMORY: + return "Out of memory"; + } +} + #endif /* CURL_DISABLE_HTTP */ diff --git a/lib/http_chunks.h b/lib/http_chunks.h index fc652d51e..0489eb859 100644 --- a/lib/http_chunks.h +++ b/lib/http_chunks.h @@ -72,12 +72,13 @@ typedef enum { CHUNKE_ILLEGAL_HEX, CHUNKE_BAD_CHUNK, CHUNKE_WRITE_ERROR, - CHUNKE_STATE_ERROR, CHUNKE_BAD_ENCODING, CHUNKE_OUT_OF_MEMORY, CHUNKE_LAST } CHUNKcode; +const char *Curl_chunked_strerror(CHUNKcode code); + struct Curl_chunker { char hexbuffer[ MAXNUM_SIZE + 1]; int hexindex; diff --git a/lib/transfer.c b/lib/transfer.c index ccaee8373..3fcc6003e 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -611,7 +611,7 @@ static CURLcode readwrite_data(struct SessionHandle *data, failf(data, "Failed writing data"); return CURLE_WRITE_ERROR; } - failf(data, "Problem (%d) in the Chunked-Encoded data", (int)res); + failf(data, "%s in chunked-encoding", Curl_chunked_strerror(res)); return CURLE_RECV_ERROR; } else if(CHUNKE_STOP == res) {