Adapt more of HTTP analyzer to use cached file analysis IDs.

Some EndOfFile calls can re-use a cached file ID.
This commit is contained in:
Jon Siwek 2014-04-23 16:26:18 -05:00
parent 0250489730
commit de8f8f87b6
2 changed files with 20 additions and 5 deletions

View file

@ -583,9 +583,16 @@ void HTTP_Message::Done(const int interrupted, const char* detail)
top_level->EndOfData(); top_level->EndOfData();
if ( is_orig || MyHTTP_Analyzer()->HTTP_ReplyCode() != 206 ) if ( is_orig || MyHTTP_Analyzer()->HTTP_ReplyCode() != 206 )
// multipart/byteranges may span multiple connections {
// multipart/byteranges may span multiple connections, so don't EOF.
HTTP_Entity* he = dynamic_cast<HTTP_Entity*>(top_level);
if ( he && ! he->FileID().empty() )
file_mgr->EndOfFile(he->FileID());
else
file_mgr->EndOfFile(MyHTTP_Analyzer()->GetAnalyzerTag(), file_mgr->EndOfFile(MyHTTP_Analyzer()->GetAnalyzerTag(),
MyHTTP_Analyzer()->Conn(), is_orig); MyHTTP_Analyzer()->Conn(), is_orig);
}
if ( http_message_done ) if ( http_message_done )
{ {
@ -663,9 +670,16 @@ void HTTP_Message::EndEntity(mime::MIME_Entity* entity)
Done(); Done();
else if ( is_orig || MyHTTP_Analyzer()->HTTP_ReplyCode() != 206 ) else if ( is_orig || MyHTTP_Analyzer()->HTTP_ReplyCode() != 206 )
{
HTTP_Entity* he = dynamic_cast<HTTP_Entity*>(entity);
if ( he && ! he->FileID().empty() )
file_mgr->EndOfFile(he->FileID());
else
file_mgr->EndOfFile(MyHTTP_Analyzer()->GetAnalyzerTag(), file_mgr->EndOfFile(MyHTTP_Analyzer()->GetAnalyzerTag(),
MyHTTP_Analyzer()->Conn(), is_orig); MyHTTP_Analyzer()->Conn(), is_orig);
} }
}
void HTTP_Message::SubmitHeader(mime::MIME_Header* h) void HTTP_Message::SubmitHeader(mime::MIME_Header* h)
{ {

View file

@ -46,6 +46,7 @@ public:
int64_t BodyLength() const { return body_length; } int64_t BodyLength() const { return body_length; }
int64_t HeaderLength() const { return header_length; } int64_t HeaderLength() const { return header_length; }
void SkipBody() { deliver_body = 0; } void SkipBody() { deliver_body = 0; }
const string& FileID() const { return precomputed_file_id; }
protected: protected:
class UncompressedOutput; class UncompressedOutput;