Changelog
+Daniel (2 August 2006)
+- Mark Lentczner fixed how libcurl was not properly doing chunked encoding
+ if the header "Transfer-Encoding: chunked" was set by the application.
+ http://curl.haxx.se/bug/view.cgi?id=1531838
+
Daniel (1 August 2006)
- Maciej Karpiuk fixed a crash that would occur if we passed Curl_strerror()
an unknown error number on glibc systems.
This release includes the following bugfixes:
+ o chunked encoding when custom header "Transfer-Encoding: chunked" is set
o Curl_strerror() crash on unknown errors
o changing Content-Type when doing formposts
o added CURL_EXTERN to a few recent multi functions that lacked them
Dan Fandrich, Peter Silva, Arve Knudsen, Michael Wallner, Toshiyuki Maezawa,
Ingmar Runge, Ates Goral, David McCreedy, Jari Sundell, Georg Horn,
Gisle Vanem, Yang Tse, Michael Jerris, Dan Nelson, Yves Lejeune,
- Maciej Karpiuk
+ Maciej Karpiuk, Mark Lentczner
Thanks! (and sorry if I forgot to mention someone)
return CURLE_OUT_OF_MEMORY;
}
- if(!conn->bits.upload_chunky && (httpreq != HTTPREQ_GET)) {
- /* not a chunky transfer yet, but data is to be sent */
- ptr = checkheaders(data, "Transfer-Encoding:");
- if(ptr) {
- /* Some kind of TE is requested, check if 'chunked' is chosen */
- conn->bits.upload_chunky =
- Curl_compareheader(ptr, "Transfer-Encoding:", "chunked");
- te = "";
- }
+ ptr = checkheaders(data, "Transfer-Encoding:");
+ if(ptr) {
+ /* Some kind of TE is requested, check if 'chunked' is chosen */
+ conn->bits.upload_chunky =
+ Curl_compareheader(ptr, "Transfer-Encoding:", "chunked");
}
- else if(conn->bits.upload_chunky) {
- /* RFC2616 section 4.4:
- Messages MUST NOT include both a Content-Length header field and a
- non-identity transfer-coding. If the message does include a non-
- identity transfer-coding, the Content-Length MUST be ignored. */
-
- if(!checkheaders(data, "Transfer-Encoding:")) {
+ else {
+ if (httpreq == HTTPREQ_GET)
+ conn->bits.upload_chunky = FALSE;
+ if(conn->bits.upload_chunky)
te = "Transfer-Encoding: chunked\r\n";
- }
- else {
- te = "";
- conn->bits.upload_chunky = FALSE; /* transfer-encoding was disabled,
- so don't chunkify this! */
- }
}
Curl_safefree(conn->allocptr.host);