I think I found the cause of the read chunked bug in HtHTTP.cc
In the method:
int HtHTTP::ReadChunkedBody()
If the variable ChunkHeader is "", the sscanf() (at least under Linux)
returns garbage (a really high number.) So, chunk_size gets set to a
really high number so the while() loop never exits.
I don't know how chunked content supposed to work, so I don't think I
can give you a bug fix but this should be enough information for some
developer to use for a fix. i.e. Questions to be answered are: Why is
ChunkHeader set to ""? And what should the program do when this
happens?
Robert
while (chunk_size > 0)
{
chunk = chunk_size;
do {
if (chunk > BSIZE) {
rsize = BSIZE;
if (debug>4)
cout << "Read chunk partial: left=" << chunk << endl;
} else {
rsize = chunk;
}
chunk -= rsize;
// Read Chunk data
if (_connection.Read(buffer, rsize) == -1)
return -1;
length+=rsize;
// Append the chunk-data to the contents of the response
// ... but not more than _max_document_size...
if (rsize > _max_document_size-_response._contents.length())
rsize = _max_document_size-_response._contents.length();
buffer[rsize] = 0;
_response._contents.append(buffer, rsize);
} while (chunk);
// if (_connection.Read(buffer, chunk_size) == -1)
// return -1;
// Read CRLF - to be ignored
_connection.Read_Line(ChunkHeader);
// Read chunk-size and CRLF
_connection.Read_Line(ChunkHeader);
sscanf ((char *)ChunkHeader, "%x", &chunk_size);
if (debug>4)
cout << "Chunk-size: " << chunk_size << endl;
}
------------------------------------
To unsubscribe from the htdig3-dev mailing list, send a message to
[EMAIL PROTECTED]
You will receive a message to confirm this.