Commit d0ac8818 authored by Guy Harris's avatar Guy Harris

If dumpcap exits abnormally, report the error.

svn path=/trunk/; revision=32964
parent 347e7a00
......@@ -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;
......
......@@ -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) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment