aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>1999-07-20 06:16:09 +0000
committerGuy Harris <guy@alum.mit.edu>1999-07-20 06:16:09 +0000
commitee263d93815a26e593f3f47416aa777c6dc0066a (patch)
tree6c94269df21b418f4c83dda9d0dc96e2bb1fb141
parentc2107fa6002db504bcc92d43a6760ae386b7abd0 (diff)
If doing a catpure with "-S", as soon as we've created the capture file
(this assumes that "libpcap" writes out the header as soon as that happens, which is the case for "libpcap" 0.4), we sync it out (to make sure said header is in the file), and signal the parent process, so that it opens the capture file and updates its windows to indicate that the capture is in progress. svn path=/trunk/; revision=371
-rw-r--r--capture.c21
-rw-r--r--capture.h3
2 files changed, 11 insertions, 13 deletions
diff --git a/capture.c b/capture.c
index d68c81c597..b7ebe8ca89 100644
--- a/capture.c
+++ b/capture.c
@@ -1,7 +1,7 @@
/* capture.c
* Routines for packet capture windows
*
- * $Id: capture.c,v 1.32 1999/07/20 05:07:57 guy Exp $
+ * $Id: capture.c,v 1.33 1999/07/20 06:16:08 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -411,7 +411,6 @@ capture(void) {
ld.counts.total = 0;
ld.max = cf.count;
ld.linktype = DLT_NULL;
- ld.signal_sent = 0;
ld.sync_time = 0;
ld.counts.tcp = 0;
ld.counts.udp = 0;
@@ -451,6 +450,15 @@ capture(void) {
}
}
+ if (sync_mode) {
+ /* Sync out the capture file, so the header makes it to the file
+ system, and signal our parent so that they'll open the capture
+ file and update its windows to indicate that we have a live
+ capture in progress. */
+ fflush((FILE *)ld.pdh);
+ kill(getppid(), SIGUSR2);
+ }
+
cap_w = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(cap_w), "Ethereal: Capture / Playback");
@@ -622,15 +630,6 @@ capture_pcap_cb(u_char *user, const struct pcap_pkthdr *phdr,
capture_raw(pd, phdr->caplen, &ld->counts);
break;
}
-
- if (sync_mode && !ld->signal_sent) {
- /* will trigger the father to open the cap file which contains
- at least one complete packet */
- fflush((FILE *)ld->pdh);
- kill(getppid(), SIGUSR2);
- ld->signal_sent = 1;
- }
-
}
#endif /* HAVE_LIBPCAP */
diff --git a/capture.h b/capture.h
index 18ca05a1c0..43395bf067 100644
--- a/capture.h
+++ b/capture.h
@@ -1,7 +1,7 @@
/* capture.h
* Definitions for packet capture windows
*
- * $Id: capture.h,v 1.8 1999/07/09 04:18:33 gram Exp $
+ * $Id: capture.h,v 1.9 1999/07/20 06:16:09 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -36,7 +36,6 @@ typedef struct _loop_data {
gint go;
gint max;
gint linktype;
- gint signal_sent;
time_t sync_time;
packet_counts counts;
pcap_dumper_t *pdh;