aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--capchild/capture_session.h1
-rw-r--r--capture_info.c6
-rw-r--r--capture_info.h3
-rw-r--r--ui/capture.c17
4 files changed, 14 insertions, 13 deletions
diff --git a/capchild/capture_session.h b/capchild/capture_session.h
index 3f113f5720..65a7d48fa0 100644
--- a/capchild/capture_session.h
+++ b/capchild/capture_session.h
@@ -52,6 +52,7 @@ typedef struct _capture_session {
guint32 count; /**< Total number of frames captured */
capture_options *capture_opts; /**< options for this capture */
capture_file *cf; /**< handle to cfile */
+ struct wtap *wtap; /**< current wtap file */
struct _info_data *cap_data_info; /**< stats for this capture */
} capture_session;
diff --git a/capture_info.c b/capture_info.c
index 887375daae..f4967a746d 100644
--- a/capture_info.c
+++ b/capture_info.c
@@ -35,7 +35,7 @@ capture_info_packet(info_data_t* cap_info, gint wtap_linktype, const guchar *pd,
}
/* new packets arrived */
-void capture_info_new_packets(int to_read, info_data_t* cap_info)
+void capture_info_new_packets(int to_read, wtap *wth, info_data_t* cap_info)
{
int err;
gchar *err_info;
@@ -52,8 +52,8 @@ void capture_info_new_packets(int to_read, info_data_t* cap_info)
wtap_rec_init(&rec);
ws_buffer_init(&buf, 1514);
while (to_read > 0) {
- wtap_cleareof(cap_info->wtap);
- if (wtap_read(cap_info->wtap, &rec, &buf, &err, &err_info, &data_offset)) {
+ wtap_cleareof(wth);
+ if (wtap_read(wth, &rec, &buf, &err, &err_info, &data_offset)) {
if (rec.rec_type == REC_TYPE_PACKET) {
pseudo_header = &rec.rec_header.packet_header.pseudo_header;
wtap_linktype = rec.rec_header.packet_header.pkt_encap;
diff --git a/capture_info.h b/capture_info.h
index 09ab8f4d61..d1d998c5d4 100644
--- a/capture_info.h
+++ b/capture_info.h
@@ -38,12 +38,11 @@ typedef struct _capture_info {
typedef struct _info_data {
packet_counts counts; /* Packet counting */
- struct wtap* wtap; /* current wtap file */
capture_info ui; /* user interface data */
} info_data_t;
/* new packets arrived - read from wtap, count */
-extern void capture_info_new_packets(int to_read, info_data_t* cap_info);
+extern void capture_info_new_packets(int to_read, wtap *wtap, info_data_t* cap_info);
/** Create the capture info dialog */
extern void
diff --git a/ui/capture.c b/ui/capture.c
index 002160c262..9c60d29da6 100644
--- a/ui/capture.c
+++ b/ui/capture.c
@@ -145,6 +145,8 @@ capture_start(capture_options *capture_opts, capture_session *cap_session, info_
capture_callback_invoke(capture_cb_capture_prepared, cap_session);
if (capture_opts->show_info) {
+ cap_session->wtap = NULL;
+
if (cap_data->counts.counts_hash != NULL)
{
/* Clean up any previous lists of packet counts */
@@ -155,7 +157,6 @@ capture_start(capture_options *capture_opts, capture_session *cap_session, info_
cap_data->counts.other = 0;
cap_data->counts.total = 0;
- cap_data->wtap = NULL;
cap_data->ui.counts = &cap_data->counts;
capture_info_ui_create(&cap_data->ui, cap_session);
@@ -447,12 +448,12 @@ capture_input_new_file(capture_session *cap_session, gchar *new_file)
}
if(capture_opts->show_info) {
- if (cap_session->cap_data_info->wtap != NULL) {
- wtap_close(cap_session->cap_data_info->wtap);
+ if (cap_session->wtap != NULL) {
+ wtap_close(cap_session->wtap);
}
- cap_session->cap_data_info->wtap = wtap_open_offline(new_file, WTAP_TYPE_AUTO, &err, &err_info, FALSE);
- if (!cap_session->cap_data_info->wtap) {
+ cap_session->wtap = wtap_open_offline(new_file, WTAP_TYPE_AUTO, &err, &err_info, FALSE);
+ if (!cap_session->wtap) {
err_msg = g_strdup_printf(cf_open_error_message(err, err_info, FALSE, WTAP_FILE_TYPE_SUBTYPE_UNKNOWN),
new_file);
g_warning("capture_input_new_file: %d (%s)", err, err_msg);
@@ -508,7 +509,7 @@ capture_input_new_packets(capture_session *cap_session, int to_read)
}
if(capture_opts->show_info)
- capture_info_new_packets(to_read, cap_session->cap_data_info);
+ capture_info_new_packets(to_read, cap_session->wtap, cap_session->cap_data_info);
}
@@ -704,8 +705,8 @@ capture_input_closed(capture_session *cap_session, gchar *msg)
if(capture_opts->show_info) {
capture_info_ui_destroy(&cap_session->cap_data_info->ui);
- if(cap_session->cap_data_info->wtap)
- wtap_close(cap_session->cap_data_info->wtap);
+ if(cap_session->wtap)
+ wtap_close(cap_session->wtap);
}
cap_session->state = CAPTURE_STOPPED;