Fix incorrect data delivery skips after gap in HTTP Content-Range.

The logic for determining whether a gap was entirely within a MIME
entity body was not asking the current entity, which may be better able
to answer that question if it was using the Content-Range header and
thus knows if the gap exceeds the length of the body that's still
expected.

Addresses BIT-1247
This commit is contained in:
Jon Siwek 2014-09-11 14:53:47 -05:00
parent 1e02d5d5b5
commit af9d31dcc1
3 changed files with 29 additions and 3 deletions

View file

@ -609,10 +609,10 @@ void HTTP_Message::Done(const int interrupted, const char* detail)
int HTTP_Message::Undelivered(int64_t len)
{
if ( ! top_level )
return 0;
HTTP_Entity* e = current_entity ? current_entity
: static_cast<HTTP_Entity*>(top_level);
if ( ((HTTP_Entity*) top_level)->Undelivered(len) )
if ( e && e->Undelivered(len) )
{
content_gap_length += len;
return 1;