diff options
author | Darius Davis <darius@vmware.com> | 2021-02-21 20:54:40 +1000 |
---|---|---|
committer | Darius Davis <darius@vmware.com> | 2021-02-22 17:00:54 +1000 |
commit | f895014f6869f201b013c35a0e234cdd0137d170 (patch) | |
tree | 7c2250e5b16c5992d745adcb02cad842e6cf3340 /debian/wireshark-common.lintian-overrides | |
parent | 297246093b1639fe989b1060e847df878050bc9e (diff) |
reassemble: Improve perf of free_all_reassembled_fragments.
When we're walking the list of fragments to free, if we encounter
FD_VISITED_FREE, we can conclude traversal of this fragment list immediately
(and go to the next hash bucket), since everything subsequent to this point in
the list has already been processed by free_all_reassembled_fragments. This
trims an O(n^2) hash table iteration down to O(n).
Before this change, a very ugly 1.1 GByte TFTP capture (with lots of
out-of-order and retransmitted blocks) takes 4 hours to process with
tftp.defragment=TRUE -- output completes after 1.25 hours, and then about
2.75 hours of time is spent doing repeated list traversals within
free_all_reassembled_fragments...(!) With this change, the same test completes
in 1.25 hours, with the cleanup taking just 71 msec.
Tested also with reassemble_test under Valgrind; No issues/leaks were reported.
Diffstat (limited to 'debian/wireshark-common.lintian-overrides')
0 files changed, 0 insertions, 0 deletions