aboutsummaryrefslogtreecommitdiffstats
path: root/dumpcap.c
diff options
context:
space:
mode:
authorJakub Zawadzki <darkjames-ws@darkjames.pl>2011-07-01 20:07:34 +0000
committerJakub Zawadzki <darkjames-ws@darkjames.pl>2011-07-01 20:07:34 +0000
commitaeb81605de4f78baf768f7301d8674ae7998c356 (patch)
treef9fc25f44f1311aab8764e1846ba6017a989f12a /dumpcap.c
parent5f2f261f52069d08c7e911409736ae876b622ae3 (diff)
Catch system exceptions from pcap_open_live() :)
svn path=/trunk/; revision=37857
Diffstat (limited to 'dumpcap.c')
-rw-r--r--dumpcap.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/dumpcap.c b/dumpcap.c
index d0eb9cc7b4..d142d6f547 100644
--- a/dumpcap.c
+++ b/dumpcap.c
@@ -637,9 +637,20 @@ open_capture_device(interface_options *interface_opts,
g_log(LOG_DOMAIN_CAPTURE_CHILD, G_LOG_LEVEL_DEBUG,
"pcap_open_live() calling using name %s, snaplen %d, promisc_mode %d.",
interface_opts->name, interface_opts->snaplen, interface_opts->promisc_mode);
+#ifdef _MSC_VER
+ __try {
+ pcap_h = pcap_open_live(interface_opts->name, interface_opts->snaplen,
+ interface_opts->promisc_mode, CAP_READ_TIMEOUT,
+ *open_err_str);
+ } __except(TRUE) {
+ g_log(LOG_DOMAIN_CAPTURE_CHILD, G_LOG_LEVEL_ERROR, "Exception from pcap_open_live(): 0x%x (0x%x)\n", GetExceptionCode(), ERROR_PROC_NOT_FOUND);
+ pcap_h = NULL;
+ }
+#else
pcap_h = pcap_open_live(interface_opts->name, interface_opts->snaplen,
interface_opts->promisc_mode, CAP_READ_TIMEOUT,
*open_err_str);
+#endif
g_log(LOG_DOMAIN_CAPTURE_CHILD, G_LOG_LEVEL_DEBUG,
"pcap_open_live() returned %p.", (void *)pcap_h);
#endif