summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2014-03-14 15:44:18 +0100
committerDaniel Stenberg <daniel@haxx.se>2014-03-14 15:44:18 +0100
commit891ef341b329ab01f27d2375157de662ec1eb9b8 (patch)
treec5f55f84863ead43d06d9a1ea868f2149ce3bc2f
parent2465ee757384855dce2b1787a9636141f3199c2a (diff)
downloadgnurl-891ef341b329ab01f27d2375157de662ec1eb9b8.tar.gz
gnurl-891ef341b329ab01f27d2375157de662ec1eb9b8.tar.bz2
gnurl-891ef341b329ab01f27d2375157de662ec1eb9b8.zip
chunked-encoding: provide a readable error string for chunked errors
-rw-r--r--lib/http_chunks.c21
-rw-r--r--lib/http_chunks.h3
-rw-r--r--lib/transfer.c2
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) {