]> granicus.if.org Git - curl/commitdiff
http_chunks: don't write chunks twice with CURLOPT_HTTP_TRANSFER_DECODING on
authorPatrick Monnerat <patrick@monnerat.net>
Mon, 12 Feb 2018 02:38:18 +0000 (03:38 +0100)
committerPatrick Monnerat <patrick@monnerat.net>
Mon, 12 Feb 2018 02:47:36 +0000 (03:47 +0100)
Bug: #2303
Reported-By: Henry Roeland
lib/http_chunks.c

index 2d9999f1822e21d3d4a873220b78effa1823e8be..8368eeca65571b97a6eab1bfc6ce0105e300994f 100644 (file)
@@ -178,15 +178,15 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn,
       piece = curlx_sotouz((ch->datasize >= length)?length:ch->datasize);
 
       /* Write the data portion available */
-      if(conn->data->set.http_ce_skip || !k->writer_stack) {
-        if(!k->ignorebody)
+      if(!conn->data->set.http_te_skip && !k->ignorebody) {
+        if(!conn->data->set.http_ce_skip && k->writer_stack)
+          result = Curl_unencode_write(conn, k->writer_stack, datap, piece);
+        else
           result = Curl_client_write(conn, CLIENTWRITE_BODY, datap, piece);
-      }
-      else
-        result = Curl_unencode_write(conn, k->writer_stack, datap, piece);
 
-      if(result)
-        return CHUNKE_WRITE_ERROR;
+        if(result)
+          return CHUNKE_WRITE_ERROR;
+      }
 
       *wrote += piece;
       ch->datasize -= piece; /* decrease amount left to expect */