From 71e3969d63d70e1e57b58568926534e963bd3b31 Mon Sep 17 00:00:00 2001 From: Jirka Novak Date: Tue, 29 Dec 2020 16:52:33 +0100 Subject: [PATCH] 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. --- ui/qt/voip_calls_dialog.cpp | 6 ++++++ ui/voip_calls.c | 4 +--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ui/qt/voip_calls_dialog.cpp b/ui/qt/voip_calls_dialog.cpp index 29008ddc34..356d4b7f0e 100644 --- a/ui/qt/voip_calls_dialog.cpp +++ b/ui/qt/voip_calls_dialog.cpp @@ -183,6 +183,12 @@ void VoipCallsDialog::tapReset(void *tapinfo_ptr) VoipCallsDialog *voip_calls_dialog = static_cast(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 *) diff --git a/ui/voip_calls.c b/ui/voip_calls.c index 357d9ec0af..03a38d0748 100644 --- a/ui/voip_calls.c +++ b/ui/voip_calls.c @@ -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);