aboutsummaryrefslogtreecommitdiffstats
path: root/sharkd_session.c
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2018-07-04 21:53:53 +0200
committerAnders Broman <a.broman58@gmail.com>2018-07-06 07:24:46 +0000
commitc40c26c04c6a39ef7867a35c50293c666255c9a4 (patch)
tree2a29719dcd64d6b6646d6a6b1233255c16863afc /sharkd_session.c
parent2d36c475f985e0499431ffb93bc65c8738370549 (diff)
Follow Stream: ensure linear performance with many packets
Reverse the payload chunks list to achieve a running time of O(n) rather than O(n²) for insertion of all chunks. Executing a RelWithDebInfo+ASAN build with `tshark -r chargen-session.pcapng.gz -qz follow,tcp,hex,0` previously took 11m5s to complete, but now finishes in 16 seconds. Tested using a capture file with 152k TCP packets (from bug 11777). Backport note: must update ui/gtk/follow_stream.c too. Change-Id: Icf70d45f33d4399e53209fb6199d3809608c8d99 Reviewed-on: https://code.wireshark.org/review/28595 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'sharkd_session.c')
-rw-r--r--sharkd_session.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sharkd_session.c b/sharkd_session.c
index 2a77168870..f2538f15fd 100644
--- a/sharkd_session.c
+++ b/sharkd_session.c
@@ -2564,7 +2564,7 @@ sharkd_session_process_follow(char *buf, const jsmntok_t *tokens, int count)
printf(",\"payloads\":[");
- for (cur = follow_info->payload; cur; cur = g_list_next(cur))
+ for (cur = g_list_last(follow_info->payload); cur; cur = g_list_previous(cur))
{
follow_record = (follow_record_t *) cur->data;