Bug report #1078066: when a chunked transfer was pre-maturely closed exactly
at a chunk boundary it was not considered an error and thus went unnoticed. Added test case 207 to verify.
This commit is contained in:
parent
6ac9e67bd7
commit
2c27e4ee76
14
CHANGES
14
CHANGES
@ -6,6 +6,20 @@
|
|||||||
|
|
||||||
Changelog
|
Changelog
|
||||||
|
|
||||||
|
Daniel (3 December 2004)
|
||||||
|
- Bug report #1078066: when a chunked transfer was pre-maturely closed exactly
|
||||||
|
at a chunk boundary it was not considered an error and thus went unnoticed.
|
||||||
|
|
||||||
|
Added test case 207 to verify.
|
||||||
|
|
||||||
|
Daniel (2 December 2004)
|
||||||
|
- Fixed the CONNECT loop to default timeout to 3600 seconds.
|
||||||
|
|
||||||
|
Added test case 206 that makes CONNECT with Digest.
|
||||||
|
|
||||||
|
Fixed a flaw that prepended "(nil)" to the initial CONNECT rqeuest's user-
|
||||||
|
agent field.
|
||||||
|
|
||||||
Daniel (30 November 2004)
|
Daniel (30 November 2004)
|
||||||
- Dan Fandrich's fix for libz 1.1 and "extra field" usage in a gzip stream
|
- Dan Fandrich's fix for libz 1.1 and "extra field" usage in a gzip stream
|
||||||
|
|
||||||
|
@ -23,7 +23,10 @@ This release includes the following changes:
|
|||||||
|
|
||||||
This release includes the following bugfixes:
|
This release includes the following bugfixes:
|
||||||
|
|
||||||
o --disable-epsv when connecting to an IPv6 ftp server
|
o chunked-encoded transfers could get closed pre-maturely without error
|
||||||
|
o proxy CONNECT now default timeouts after 3600 seconds
|
||||||
|
o --disable-epsv and --disable-eprt are ignored when connecting to an IPv6 ftp
|
||||||
|
server
|
||||||
o no more extra progress meter newline output after each Location: followed
|
o no more extra progress meter newline output after each Location: followed
|
||||||
o HTTP PUT/POST with Digest, NTLM or Negotiate no longer uses HEAD
|
o HTTP PUT/POST with Digest, NTLM or Negotiate no longer uses HEAD
|
||||||
o now gracefully bails out when exceeding FD_SETSIZE file descriptors
|
o now gracefully bails out when exceeding FD_SETSIZE file descriptors
|
||||||
|
@ -1368,9 +1368,18 @@ CURLcode Curl_readwrite(struct connectdata *conn,
|
|||||||
conn->size - k->bytecount);
|
conn->size - k->bytecount);
|
||||||
return CURLE_PARTIAL_FILE;
|
return CURLE_PARTIAL_FILE;
|
||||||
}
|
}
|
||||||
else if(conn->bits.chunk && conn->proto.http->chunk.datasize) {
|
else if(conn->bits.chunk &&
|
||||||
failf(data, "transfer closed with at least %d bytes remaining",
|
(conn->proto.http->chunk.state != CHUNK_STOP)) {
|
||||||
conn->proto.http->chunk.datasize);
|
/*
|
||||||
|
* In chunked mode, return an error if the connection is closed prior to
|
||||||
|
* the empty (terminiating) chunk is read.
|
||||||
|
*
|
||||||
|
* The condition above used to check for
|
||||||
|
* conn->proto.http->chunk.datasize != 0 which is true after reading
|
||||||
|
* *any* chunk, not just the empty chunk.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
failf(data, "transfer closed with outstanding read data remaining");
|
||||||
return CURLE_PARTIAL_FILE;
|
return CURLE_PARTIAL_FILE;
|
||||||
}
|
}
|
||||||
if(Curl_pgrsUpdate(conn))
|
if(Curl_pgrsUpdate(conn))
|
||||||
|
@ -29,7 +29,7 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \
|
|||||||
test184 test185 test186 test187 test188 test189 test191 test192 \
|
test184 test185 test186 test187 test188 test189 test191 test192 \
|
||||||
test193 test194 test195 test196 test197 test198 test515 test516 \
|
test193 test194 test195 test196 test197 test198 test515 test516 \
|
||||||
test517 test518 test210 test211 test212 test220 test221 test222 \
|
test517 test518 test210 test211 test212 test220 test221 test222 \
|
||||||
test223 test224 test206
|
test223 test224 test206 test207
|
||||||
|
|
||||||
# The following tests have been removed from the dist since they no longer
|
# The following tests have been removed from the dist since they no longer
|
||||||
# work. We need to fix the test suite's FTPS server first, then bring them
|
# work. We need to fix the test suite's FTPS server first, then bring them
|
||||||
|
57
tests/data/test207
Normal file
57
tests/data/test207
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
#
|
||||||
|
# Server-side
|
||||||
|
<reply>
|
||||||
|
<data>
|
||||||
|
HTTP/1.1 200 funky chunky! swsclose
|
||||||
|
Server: fakeit/0.9 fakeitbad/1.0
|
||||||
|
Transfer-Encoding: chunked
|
||||||
|
Connection: mooo
|
||||||
|
|
||||||
|
41
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
|
||||||
|
</data>
|
||||||
|
<datacheck>
|
||||||
|
HTTP/1.1 200 funky chunky! swsclose
|
||||||
|
Server: fakeit/0.9 fakeitbad/1.0
|
||||||
|
Transfer-Encoding: chunked
|
||||||
|
Connection: mooo
|
||||||
|
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
</datacheck>
|
||||||
|
</reply>
|
||||||
|
|
||||||
|
#
|
||||||
|
# Client-side
|
||||||
|
<client>
|
||||||
|
<server>
|
||||||
|
http
|
||||||
|
</server>
|
||||||
|
<name>
|
||||||
|
HTTP GET with chunked Transfer-Encoding closed pre-maturely
|
||||||
|
</name>
|
||||||
|
<command>
|
||||||
|
http://%HOSTIP:%HTTPPORT/207
|
||||||
|
</command>
|
||||||
|
</test>
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verify data after the test has been "shot"
|
||||||
|
<verify>
|
||||||
|
<strip>
|
||||||
|
^User-Agent:.*
|
||||||
|
</strip>
|
||||||
|
<protocol>
|
||||||
|
GET /207 HTTP/1.1
|
||||||
|
Host: 127.0.0.1:%HTTPPORT
|
||||||
|
Pragma: no-cache
|
||||||
|
Accept: */*
|
||||||
|
|
||||||
|
</protocol>
|
||||||
|
|
||||||
|
# curl: (18) transfer closed with outstanding read data remaining
|
||||||
|
# 18 == CURLE_PARTIAL_FILE
|
||||||
|
<errorcode>
|
||||||
|
18
|
||||||
|
</errorcode>
|
||||||
|
</verify>
|
Loading…
x
Reference in New Issue
Block a user