diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2017-09-09 22:49:45 +0200 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2017-09-11 05:05:45 +0000 |
commit | 02b20a5a699a557ab0696ebb024b6a3b1d39c41e (patch) | |
tree | c582a0d9dbedf4a301d2b895e378941e29751213 /ui | |
parent | 06584b7a43101dca05f5a3040dbb26898a6c812f (diff) |
Qt: fix Diameter SRT statistics display
Diameter dynamically create the SRT entries during runtime.
Delay the SRT table addition to the end of dissection to properly handle
this use case.
Bug: 13442
Change-Id: Id498f8d9bb4a1d7c632c9a556239bf74d0530f2a
Reviewed-on: https://code.wireshark.org/review/23443
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'ui')
-rw-r--r-- | ui/qt/service_response_time_dialog.cpp | 26 | ||||
-rw-r--r-- | ui/qt/service_response_time_dialog.h | 6 |
2 files changed, 21 insertions, 11 deletions
diff --git a/ui/qt/service_response_time_dialog.cpp b/ui/qt/service_response_time_dialog.cpp index 9b4ef6365d..b9128e0b65 100644 --- a/ui/qt/service_response_time_dialog.cpp +++ b/ui/qt/service_response_time_dialog.cpp @@ -233,10 +233,6 @@ void ServiceResponseTimeDialog::tapReset(void *srtd_ptr) reset_srt_table(srtd->srt_array, NULL, NULL); srt_dlg->statsTreeWidget()->clear(); - for (guint i = 0; i < srtd->srt_array->len; i++) { - srt_stat_table *srt_table = g_array_index(srtd->srt_array, srt_stat_table*, i); - srt_dlg->addSrtTable(srt_table); - } } void ServiceResponseTimeDialog::tapDraw(void *srtd_ptr) @@ -259,17 +255,25 @@ void ServiceResponseTimeDialog::tapDraw(void *srtd_ptr) } } +void ServiceResponseTimeDialog::endRetapPackets() +{ + for (guint i = 0; i < srt_data_.srt_array->len; i++) { + srt_stat_table *srt_table = g_array_index(srt_data_.srt_array, srt_stat_table*, i); + addSrtTable(srt_table); + } + WiresharkDialog::endRetapPackets(); +} + void ServiceResponseTimeDialog::fillTree() { - srt_data_t srt_data; - srt_data.srt_array = g_array_new(FALSE, TRUE, sizeof(srt_stat_table*)); - srt_data.user_data = this; + srt_data_.srt_array = g_array_new(FALSE, TRUE, sizeof(srt_stat_table*)); + srt_data_.user_data = this; - srt_table_dissector_init(srt_, srt_data.srt_array, NULL, NULL); + srt_table_dissector_init(srt_, srt_data_.srt_array, NULL, NULL); QString display_filter = displayFilter(); if (!registerTapListener(get_srt_tap_listener_name(srt_), - &srt_data, + &srt_data_, display_filter.toUtf8().constData(), 0, tapReset, @@ -288,14 +292,14 @@ void ServiceResponseTimeDialog::fillTree() statsTreeWidget()->setRootIndex(statsTreeWidget()->model()->index(0, 0)); } - tapDraw(&srt_data); + tapDraw(&srt_data_); statsTreeWidget()->sortItems(SRT_COLUMN_PROCEDURE, Qt::AscendingOrder); statsTreeWidget()->setSortingEnabled(true); removeTapListeners(); - g_array_free(srt_data.srt_array, TRUE); + g_array_free(srt_data_.srt_array, TRUE); } QList<QVariant> ServiceResponseTimeDialog::treeItemData(QTreeWidgetItem *ti) const diff --git a/ui/qt/service_response_time_dialog.h b/ui/qt/service_response_time_dialog.h index 9722141d87..f3273ac6ea 100644 --- a/ui/qt/service_response_time_dialog.h +++ b/ui/qt/service_response_time_dialog.h @@ -23,6 +23,7 @@ #define __SERVICE_RESPONSE_TIME_DIALOG_H__ #include "tap_parameter_dialog.h" +#include <epan/srt_table.h> struct register_srt; struct _srt_stat_table; @@ -37,6 +38,9 @@ public: ServiceResponseTimeDialog(QWidget &parent, CaptureFile &cf, struct register_srt *srt, const QString filter, int help_topic = 0); static TapParameterDialog *createSrtDialog(QWidget &parent, const QString cfg_str, const QString filter, CaptureFile &cf); +public slots: + void endRetapPackets(); + protected: struct register_srt *srt_; @@ -61,6 +65,8 @@ private: virtual QList<QVariant> treeItemData(QTreeWidgetItem *ti) const; virtual const QString filterExpression(); + srt_data_t srt_data_; + private slots: void statsTreeWidgetItemChanged(); }; |