aboutsummaryrefslogtreecommitdiffstats
path: root/capchild
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2015-04-06 12:14:25 -0700
committerGuy Harris <guy@alum.mit.edu>2015-04-06 19:15:24 +0000
commit1871fb2b0d9628707661776cfa1b35f210e5e58e (patch)
tree36a23e755ae887fb26e47af67645b2ac454ca32e /capchild
parentb23ab904e728022340f139701626a06851562b1d (diff)
Keep a captured-packet count in a capture_session and use that.
Have the count in a cfile_t structure always reflect the actual number of packets that have been read from the file, rather than, when doing a non-update-list-of-packets-in-real-time capture, falsely increasing the count in the cfile_t to reflect the number of packets captured but not yet read. Have the status bar base its captured-packet count on the count in the capture_session structure, and base the "sorry, no packets were captured" message on the count in the capture_session structure, as we're no longer using the count in the cfile_t structure to count anything in the process of a non-update-list-of-packets-in-real-time capture. That way, we preserve the invariant that the "frames" member of a cfile_t will be non-null if the "count" member is non-zero, fixing bug 6217. It also means we can get rid of cf_set_packet_count(), as we only set the count in the capture-file-reading code. Bug: 6217 Change-Id: I72c0e2c07c30782bad777995370b7c19e1460cc2 Reviewed-on: https://code.wireshark.org/review/7950 Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'capchild')
-rw-r--r--capchild/capture_session.h1
-rw-r--r--capchild/capture_sync.c2
2 files changed, 3 insertions, 0 deletions
diff --git a/capchild/capture_session.h b/capchild/capture_session.h
index 06cfb88902..5f3d46d842 100644
--- a/capchild/capture_session.h
+++ b/capchild/capture_session.h
@@ -58,6 +58,7 @@ typedef struct _capture_session {
gid_t group; /**< group of the cfile */
#endif
gboolean session_started;
+ guint32 count; /**< Total number of frames captured */
capture_options *capture_opts; /**< options for this capture */
struct _capture_file *cf; /**< handle to cfile */
} capture_session;
diff --git a/capchild/capture_sync.c b/capchild/capture_sync.c
index ed6ecd638d..d2c2fc51aa 100644
--- a/capchild/capture_sync.c
+++ b/capchild/capture_sync.c
@@ -139,6 +139,7 @@ capture_session_init(capture_session *cap_session, struct _capture_file *cf)
cap_session->owner = getuid();
cap_session->group = getgid();
#endif
+ cap_session->count = 0;
cap_session->session_started = FALSE;
}
@@ -1814,6 +1815,7 @@ sync_pipe_input_cb(gint source, gpointer user_data)
case SP_PACKET_COUNT:
npackets = atoi(buffer);
g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_DEBUG, "sync_pipe_input_cb: new packets %u", npackets);
+ cap_session->count += npackets;
capture_input_new_packets(cap_session, npackets);
break;
case SP_ERROR_MSG: