diff options
author | guy <guy@f5534014-38df-0310-8fa8-9805f1628bb7> | 2010-05-26 02:32:19 +0000 |
---|---|---|
committer | guy <guy@f5534014-38df-0310-8fa8-9805f1628bb7> | 2010-05-26 02:32:19 +0000 |
commit | 9a1ac9273865bd85f8fe1d68fe67923dac95fe81 (patch) | |
tree | 5ef81348bbe1be9f751202477598a4decd3dbba1 | |
parent | c053fa94ab082986dade8fe214e4964986193f85 (diff) |
If dumpcap exits abnormally, report the error.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@32964 f5534014-38df-0310-8fa8-9805f1628bb7
-rw-r--r-- | capture.c | 5 | ||||
-rw-r--r-- | capture.h | 5 | ||||
-rw-r--r-- | capture_sync.c | 4 | ||||
-rw-r--r-- | tshark.c | 10 |
4 files changed, 17 insertions, 7 deletions
@@ -510,7 +510,7 @@ capture_input_cfilter_error_message(capture_options *capture_opts, char *error_m /* capture child closed its side of the pipe, do the required cleanup */ void -capture_input_closed(capture_options *capture_opts) +capture_input_closed(capture_options *capture_opts, gchar *msg) { int err; int packet_count_save; @@ -518,6 +518,9 @@ capture_input_closed(capture_options *capture_opts) g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_MESSAGE, "Capture stopped!"); g_assert(capture_opts->state == CAPTURE_PREPARING || capture_opts->state == CAPTURE_RUNNING); + if (msg != NULL) + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", msg); + /* if we didn't start the capture, do a fake start. */ /* (happens if we got an error message - we won't get a filename then). */ if(capture_opts->state == CAPTURE_PREPARING) { @@ -97,9 +97,10 @@ extern void capture_input_error_message(capture_options *capture_opts, char *err extern void capture_input_cfilter_error_message(capture_options *capture_opts, char *error_message); /** - * Capture child closed its side of the pipe, do the required cleanup. + * Capture child closed its side of the pipe, report any error and + * do the required cleanup. */ -extern void capture_input_closed(capture_options *capture_opts); +extern void capture_input_closed(capture_options *capture_opts, gchar *msg); struct if_stat_cache_s; typedef struct if_stat_cache_s if_stat_cache_t; diff --git a/capture_sync.c b/capture_sync.c index a66aff4b18..6e4d052c8a 100644 --- a/capture_sync.c +++ b/capture_sync.c @@ -1434,7 +1434,6 @@ sync_pipe_input_cb(gint source, gpointer user_data) else primary_msg = g_strdup("Error reading from sync pipe"); } - g_free(primary_msg); /* XXX - display this */ /* No more child process. */ capture_opts->fork_child = -1; @@ -1442,7 +1441,8 @@ sync_pipe_input_cb(gint source, gpointer user_data) #ifdef _WIN32 ws_close(capture_opts->signal_pipe_write_fd); #endif - capture_input_closed(capture_opts); + capture_input_closed(capture_opts, primary_msg); + g_free(primary_msg); return FALSE; } @@ -2179,10 +2179,16 @@ capture_input_drops(capture_options *capture_opts _U_, guint32 dropped) } -/* capture child closed its side of the pipe, do the required cleanup */ +/* + * Capture child closed its side of the pipe, report any error and + * do the required cleanup. + */ void -capture_input_closed(capture_options *capture_opts) +capture_input_closed(capture_options *capture_opts, gchar *msg) { + if (msg != NULL) + fprintf(stderr, "tshark: %s\n", msg); + report_counts(); if(capture_opts->cf != NULL && ((capture_file *) capture_opts->cf)->wth != NULL) { |