diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2004-01-28 17:07:22 +0000 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2004-01-28 17:07:22 +0000 | 
| commit | 958987c214cacdfaad6fa960b39e0c917f43af2d (patch) | |
| tree | c56329e40b0b015ab7d081dfdd8868a75643f456 | |
| parent | ed75842df07357acde35c6edef39aa6e31d752a2 (diff) | |
Chunked-transfers should have an additional CRLF after the final 0 CRLF
sequence.
| -rw-r--r-- | lib/http.c | 4 | ||||
| -rw-r--r-- | lib/transfer.c | 14 | ||||
| -rw-r--r-- | tests/data/test56 | 1 | 
3 files changed, 10 insertions, 9 deletions
| diff --git a/lib/http.c b/lib/http.c index 0dcaf7866..c3862cded 100644 --- a/lib/http.c +++ b/lib/http.c @@ -1614,8 +1614,8 @@ CURLcode Curl_http(struct connectdata *conn)              /* Append the POST data chunky-style */              add_bufferf(req_buffer, "%x\r\n", postsize);              add_buffer(req_buffer, data->set.postfields, postsize); -            add_buffer(req_buffer, "\r\n0\r\n", 5); /* end of a chunked -                                                       transfer stream */ +            add_buffer(req_buffer, "\r\n0\r\n\r\n", 7); /* end of a chunked +                                                           transfer stream */            }          }          else { diff --git a/lib/transfer.c b/lib/transfer.c index 3c2bf4baf..eb0c99452 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -152,16 +152,16 @@ static int fillbuffer(struct connectdata *conn,      /* copy the prefix to the buffer */      memcpy(conn->upload_fromhere, hexbuffer, hexlen); -    if(nread>hexlen) { -      /* append CRLF to the data */ -      memcpy(conn->upload_fromhere + -             nread, "\r\n", 2); -      nread+=2; -    } -    else { + +    /* always append CRLF to the data */ +    memcpy(conn->upload_fromhere + nread, "\r\n", 2); + +    if((nread - hexlen) == 0) {        /* mark this as done once this chunk is transfered */        conn->keep.upload_done = TRUE;      } + +    nread+=2; /* for the added CRLF */    }    return nread;  } diff --git a/tests/data/test56 b/tests/data/test56 index 78e29f62e..fa0a6e4d1 100644 --- a/tests/data/test56 +++ b/tests/data/test56 @@ -48,5 +48,6 @@ Content-Type: application/x-www-form-urlencoded  c
  we post this
  0
 +
  </protocol>  </verify> | 
