Fix bug #8160, one case left where delta of previously captured frame is incorrectly calculated:

two passes wireshark && previously captured frame hasn't pass filter

svn path=/trunk/; revision=47849
This commit is contained in:
Jakub Zawadzki 2013-02-24 00:45:59 +00:00
parent 7f0ee327ca
commit aeebbe9af8
1 changed files with 11 additions and 8 deletions

View File

@ -2672,15 +2672,16 @@ process_packet_first_pass(capture_file *cf,
if (passed) {
frame_data_set_after_dissect(&fdlocal, &cum_bytes);
prev_dis_frame = fdlocal;
prev_dis = &prev_dis_frame;
frame_data_sequence_add(cf->frames, &fdlocal);
prev_cap = prev_dis = frame_data_sequence_add(cf->frames, &fdlocal);
cf->count++;
} else {
/* TODO, bug #8160 */
/*
prev_cap_frame = fdlocal;
prev_cap = &prev_cap_frame;
*/
}
prev_cap_frame = fdlocal;
prev_cap = &prev_cap_frame;
if (do_dissection)
epan_dissect_cleanup(&edt);
@ -3199,8 +3200,6 @@ process_packet(capture_file *cf, gint64 offset, struct wtap_pkthdr *whdr,
if (passed) {
frame_data_set_after_dissect(&fdata, &cum_bytes);
prev_dis_frame = fdata;
prev_dis = &prev_dis_frame;
/* Process this packet. */
if (print_packet_info) {
@ -3239,6 +3238,10 @@ process_packet(capture_file *cf, gint64 offset, struct wtap_pkthdr *whdr,
exit(2);
}
}
/* this must be set after print_packet() [bug #8160] */
prev_dis_frame = fdata;
prev_dis = &prev_dis_frame;
}
prev_cap_frame = fdata;