diff --git a/src/file_analysis/Manager.cc b/src/file_analysis/Manager.cc index 31d548f4e4..c0de853710 100644 --- a/src/file_analysis/Manager.cc +++ b/src/file_analysis/Manager.cc @@ -65,7 +65,9 @@ void Manager::DataIn(const u_char* data, uint64 len, AnalyzerTag::Tag tag, { if ( IsDisabled(tag) ) return; GetFileHandle(tag, conn, is_orig); - DataIn(data, len, GetFile(current_handle, conn, tag)); + // Sequential data input shouldn't be going over multiple conns, so don't + // do the check to update connection set. + DataIn(data, len, GetFile(current_handle, conn, tag, false)); } void Manager::DataIn(const u_char* data, uint64 len, const string& unique) @@ -186,7 +188,7 @@ bool Manager::RemoveAnalyzer(const FileID& file_id, const RecordVal* args) const } File* Manager::GetFile(const string& unique, Connection* conn, - AnalyzerTag::Tag tag) + AnalyzerTag::Tag tag, bool update_conn) { if ( unique.empty() ) return 0; if ( IsIgnored(unique) ) return 0; @@ -211,7 +213,8 @@ File* Manager::GetFile(const string& unique, Connection* conn, else { rval->UpdateLastActivityTime(); - rval->UpdateConnectionFields(conn); + if ( update_conn ) + rval->UpdateConnectionFields(conn); } return rval; diff --git a/src/file_analysis/Manager.h b/src/file_analysis/Manager.h index f22c919736..c27444fb65 100644 --- a/src/file_analysis/Manager.h +++ b/src/file_analysis/Manager.h @@ -134,7 +134,8 @@ protected: * fields. */ File* GetFile(const string& unique, Connection* conn = 0, - AnalyzerTag::Tag tag = AnalyzerTag::Error); + AnalyzerTag::Tag tag = AnalyzerTag::Error, + bool update_conn = true); /** * @return the File object mapped to \a file_id, or a null pointer if no