diff options
author | Peter Wu <peter@lekensteyn.nl> | 2017-06-20 14:08:39 -0400 |
---|---|---|
committer | Peter Wu <peter@lekensteyn.nl> | 2017-06-20 20:34:23 +0000 |
commit | 4deb97f31f52ca9c88efbbf46cf3e580c85474f3 (patch) | |
tree | 50694ea33ffc945f0ce47edbead84b1003ed4a6c /ui/qt | |
parent | e6883c15ac00942e3232213f087147e355f7494b (diff) | |
download | wireshark-4deb97f31f52ca9c88efbbf46cf3e580c85474f3.tar.gz |
Fix filter for "Next Packet in Conversation"
The "Previous/Next Packet in Conversation" actions accidentally
overwrites more specific filters (like TCP port matching) by less
specific ones (like IP addresses). This resulted in strange behavior
where packets from different TCP streams were selected.
Change-Id: Ifa93064e1db3777fa3c12e2220bbb0b36b9478fe
Reported-by: Christian Landström
Reviewed-on: https://code.wireshark.org/review/22274
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Diffstat (limited to 'ui/qt')
-rw-r--r-- | ui/qt/main_window_slots.cpp | 41 |
1 files changed, 2 insertions, 39 deletions
diff --git a/ui/qt/main_window_slots.cpp b/ui/qt/main_window_slots.cpp index b2f849bc9b..51851e6caa 100644 --- a/ui/qt/main_window_slots.cpp +++ b/ui/qt/main_window_slots.cpp @@ -2505,31 +2505,7 @@ void MainWindow::colorizeConversation(bool create_rule) if (capture_file_.capFile() && capture_file_.capFile()->current_frame) { packet_info *pi = capture_file_.packetInfo(); guint8 cc_num = colorize_action->data().toUInt(); - gchar *filter = NULL; - - const conversation_filter_t *color_filter = find_conversation_filter("tcp"); - if ((color_filter != NULL) && (color_filter->is_filter_valid(pi))) - filter = color_filter->build_filter_string(pi); - if (filter == NULL) { - color_filter = find_conversation_filter("udp"); - if ((color_filter != NULL) && (color_filter->is_filter_valid(pi))) - filter = color_filter->build_filter_string(pi); - } - if (filter == NULL) { - color_filter = find_conversation_filter("ip"); - if ((color_filter != NULL) && (color_filter->is_filter_valid(pi))) - filter = color_filter->build_filter_string(pi); - } - if (filter == NULL) { - color_filter = find_conversation_filter("ipv6"); - if ((color_filter != NULL) && (color_filter->is_filter_valid(pi))) - filter = color_filter->build_filter_string(pi); - } - if (filter == NULL) { - color_filter = find_conversation_filter("eth"); - if ((color_filter != NULL) && (color_filter->is_filter_valid(pi))) - filter = color_filter->build_filter_string(pi); - } + gchar *filter = conversation_filter_from_packet(pi); if (filter == NULL) { main_ui_->statusBar->pushTemporaryStatus(tr("Unable to build conversation filter.")); return; @@ -3636,24 +3612,11 @@ void MainWindow::goToConversationFrame(bool go_next) { dfilter_t *dfcode = NULL; gboolean found_packet = FALSE; packet_info *pi = &(capture_file_.capFile()->edt->pi); - conversation_filter_t* conv_filter; /* Try to build a conversation * filter in the order TCP, UDP, IP, Ethernet and apply the * coloring */ - conv_filter = find_conversation_filter("tcp"); - if ((conv_filter != NULL) && (conv_filter->is_filter_valid(pi))) - filter = conv_filter->build_filter_string(pi); - conv_filter = find_conversation_filter("udp"); - if ((conv_filter != NULL) && (conv_filter->is_filter_valid(pi))) - filter = conv_filter->build_filter_string(pi); - conv_filter = find_conversation_filter("ip"); - if ((conv_filter != NULL) && (conv_filter->is_filter_valid(pi))) - filter = conv_filter->build_filter_string(pi); - conv_filter = find_conversation_filter("ipv6"); - if ((conv_filter != NULL) && (conv_filter->is_filter_valid(pi))) - filter = conv_filter->build_filter_string(pi); - + filter = conversation_filter_from_packet(pi); if (filter == NULL) { main_ui_->statusBar->pushTemporaryStatus(tr("Unable to build conversation filter.")); g_free(filter); |