voip_calls_dialog/voip_calls: Fix for #16952

The fix solves issue #16952. It reverts commit 88813716 which introduced memory leak which causes the issue. The original issue with duplicating entries is solved too.
Because commit was cherry picked to 3.4.0 (might be in more branches), this patch should be cherry picked too.
This commit is contained in:
Jirka Novak 2020-12-29 16:52:33 +01:00 committed by AndersBroman
parent fbccfe9996
commit 71e3969d63
2 changed files with 7 additions and 3 deletions

View File

@ -183,6 +183,12 @@ void VoipCallsDialog::tapReset(void *tapinfo_ptr)
VoipCallsDialog *voip_calls_dialog = static_cast<VoipCallsDialog *>(tapinfo->tap_data);
voip_calls_dialog->call_infos_model_->removeAllCalls();
voip_calls_reset_all_taps(tapinfo);
// Leave old graph_analysis as is and allocate new one
voip_calls_dialog->sequence_info_->unref();
voip_calls_dialog->tapinfo_.graph_analysis = sequence_analysis_info_new();
voip_calls_dialog->tapinfo_.graph_analysis->name = "voip";
voip_calls_dialog->sequence_info_ = new SequenceInfo(voip_calls_dialog->tapinfo_.graph_analysis);
}
tap_packet_status VoipCallsDialog::tapPacket(void *, packet_info *, epan_dissect_t *, const void *)

View File

@ -574,9 +574,7 @@ rtp_reset(void *tap_offset_ptr)
tapinfo->rtpstream_list = NULL;
tapinfo->nrtpstreams = 0;
if (tapinfo->graph_analysis) {
sequence_analysis_list_free(tapinfo->graph_analysis);
}
// Do not touch graph_analysis, it is handled by caller
if (tapinfo->tap_reset) {
tapinfo->tap_reset(tapinfo);