summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuis Ontanon <luis.ontanon@gmail.com>2013-06-27 17:10:50 +0000
committerLuis Ontanon <luis.ontanon@gmail.com>2013-06-27 17:10:50 +0000
commit0bdc0efc46ec66a298306aae253225c702ed6bea (patch)
tree1d6db93f3252994330777f123cb3d038518080e9
parentb450609a5561db9ddfc23b41c742979f5c4b3a32 (diff)
downloadwireshark-0bdc0efc46ec66a298306aae253225c702ed6bea.tar.gz
get main_window_update out of the way... pass an update_cb to the capture_sync stuff
... as per the XXX comment removed from tshark.c this was a mess to keep the linker happy... I couldn't! I did this without even understanding whether calling main_window_update was realy necessary in most cases. I guess nothing or more specific update cbs would be best. svn path=/trunk/; revision=50188
-rw-r--r--capture.c8
-rw-r--r--capture.h2
-rw-r--r--capture_ifinfo.c8
-rw-r--r--capture_ifinfo.h4
-rw-r--r--capture_sync.c34
-rw-r--r--capture_sync.h10
-rw-r--r--capture_ui_utils.c2
-rw-r--r--dumpcap.c29
-rw-r--r--tshark.c13
-rw-r--r--ui/gtk/capture_dlg.c6
-rw-r--r--ui/gtk/main.c8
-rw-r--r--ui/gtk/main_80211_toolbar.c3
-rw-r--r--ui/gtk/main_welcome.c5
-rw-r--r--ui/gtk/prefs_capture.c15
-rw-r--r--ui/gtk/voip_calls.c9
-rw-r--r--ui/iface_lists.c10
-rw-r--r--ui/iface_lists.h4
17 files changed, 90 insertions, 80 deletions
diff --git a/capture.c b/capture.c
index ae940a2d69..5868923fb4 100644
--- a/capture.c
+++ b/capture.c
@@ -130,7 +130,7 @@ capture_callback_remove(capture_callback_t func)
* @return TRUE if the capture starts successfully, FALSE otherwise.
*/
gboolean
-capture_start(capture_options *capture_opts, capture_session *cap_session)
+capture_start(capture_options *capture_opts, capture_session *cap_session, void(*update_cb)(void))
{
gboolean ret;
guint i;
@@ -168,7 +168,7 @@ capture_start(capture_options *capture_opts, capture_session *cap_session)
cf_set_tempfile_source((capture_file *)cap_session->cf, source->str);
g_string_free(source, TRUE);
/* try to start the capture child process */
- ret = sync_pipe_start(capture_opts, cap_session);
+ ret = sync_pipe_start(capture_opts, cap_session, update_cb);
if(!ret) {
if(capture_opts->save_file != NULL) {
g_free(capture_opts->save_file);
@@ -660,7 +660,7 @@ capture_input_closed(capture_session *cap_session, gchar *msg)
/* close the currently loaded capture file */
cf_close((capture_file *)cap_session->cf);
- capture_start(capture_opts, cap_session);
+ capture_start(capture_opts, cap_session,NULL); /*XXX is this NULL ok or we need an update_cb???*/
} else {
/* We're not doing a capture any more, so we don't have a save file. */
g_free(capture_opts->save_file);
@@ -696,7 +696,7 @@ capture_stat_start(capture_options *capture_opts) {
* mechanism, so opening all the devices and presenting packet
* counts might not always be a good idea.
*/
- if (sync_interface_stats_open(&stat_fd, &fork_child, &msg) == 0) {
+ if (sync_interface_stats_open(&stat_fd, &fork_child, &msg, NULL) == 0) {
sc = (if_stat_cache_t *)g_malloc(sizeof(if_stat_cache_t));
sc->stat_fd = stat_fd;
sc->fork_child = fork_child;
diff --git a/capture.h b/capture.h
index dd638870dc..f6f205d307 100644
--- a/capture.h
+++ b/capture.h
@@ -66,7 +66,7 @@ capture_callback_remove(capture_callback_t func);
* @return TRUE if the capture starts successfully, FALSE otherwise.
*/
extern gboolean
-capture_start(capture_options *capture_opts, capture_session *cap_session);
+capture_start(capture_options *capture_opts, capture_session *cap_session, void(*update_cb)(void));
/** Stop a capture session (usually from a menu item). */
extern void
diff --git a/capture_ifinfo.c b/capture_ifinfo.c
index 8b6faaea6e..a0a5dea2fd 100644
--- a/capture_ifinfo.c
+++ b/capture_ifinfo.c
@@ -105,7 +105,7 @@ static void append_remote_list(GList *iflist)
/* XXX - We parse simple text output to get our interface list. Should
* we use "real" data serialization instead, e.g. via XML? */
GList *
-capture_interface_list(int *err, char **err_str)
+capture_interface_list(int *err, char **err_str, void (*update_cb)(void))
{
int ret;
GList *if_list = NULL;
@@ -119,7 +119,7 @@ capture_interface_list(int *err, char **err_str)
g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_MESSAGE, "Capture Interface List ...");
/* Try to get our interface list */
- ret = sync_interface_list_open(&data, &primary_msg, &secondary_msg);
+ ret = sync_interface_list_open(&data, &primary_msg, &secondary_msg, update_cb);
if (ret != 0) {
g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_MESSAGE, "Capture Interface List failed!");
if (err_str) {
@@ -206,7 +206,7 @@ capture_interface_list(int *err, char **err_str)
* we use "real" data serialization instead, e.g. via XML? */
if_capabilities_t *
capture_get_if_capabilities(const gchar *ifname, gboolean monitor_mode,
- char **err_str)
+ char **err_str, void (*update_cb)(void))
{
if_capabilities_t *caps;
GList *linktype_list = NULL;
@@ -219,7 +219,7 @@ capture_get_if_capabilities(const gchar *ifname, gboolean monitor_mode,
/* Try to get our interface list */
err = sync_if_capabilities_open(ifname, monitor_mode, &data,
- &primary_msg, &secondary_msg);
+ &primary_msg, &secondary_msg, update_cb);
if (err != 0) {
g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_MESSAGE, "Capture Interface Capabilities failed!");
if (err_str) {
diff --git a/capture_ifinfo.h b/capture_ifinfo.h
index 097d9e10ba..b19454f899 100644
--- a/capture_ifinfo.h
+++ b/capture_ifinfo.h
@@ -77,7 +77,7 @@ typedef struct {
/**
* Fetch the interface list from a child process.
*/
-extern GList *capture_interface_list(int *err, char **err_str);
+extern GList *capture_interface_list(int *err, char **err_str, void (*update_cb)(void));
/* Error values from "get_interface_list()/capture_interface_list()". */
#define CANT_GET_INTERFACE_LIST 1 /* error getting list */
@@ -110,7 +110,7 @@ typedef struct {
*/
extern if_capabilities_t *
capture_get_if_capabilities(const char *devname, gboolean monitor_mode,
- char **err_str);
+ char **err_str, void (*update_cb)(void));
void free_if_capabilities(if_capabilities_t *caps);
diff --git a/capture_sync.c b/capture_sync.c
index 5914977c6c..9a2136814a 100644
--- a/capture_sync.c
+++ b/capture_sync.c
@@ -334,7 +334,7 @@ init_pipe_args(int *argc) {
#define ARGV_NUMBER_LEN 24
/* a new capture run: start a new dumpcap task and hand over parameters through command line */
gboolean
-sync_pipe_start(capture_options *capture_opts, capture_session *cap_session)
+sync_pipe_start(capture_options *capture_opts, capture_session *cap_session, void (*update_cb)(void))
{
char ssnap[ARGV_NUMBER_LEN];
char scount[ARGV_NUMBER_LEN];
@@ -687,7 +687,7 @@ sync_pipe_start(capture_options *capture_opts, capture_session *cap_session)
cap_session->capture_opts = capture_opts;
/* we might wait for a moment till child is ready, so update screen now */
- main_window_update();
+ if (update_cb) update_cb();
/* We were able to set up to read the capture file;
arrange that our callback be called whenever it's possible
@@ -718,7 +718,7 @@ sync_pipe_start(capture_options *capture_opts, capture_session *cap_session)
#define PIPE_BUF_SIZE 5120
static int
sync_pipe_open_command(char** argv, int *data_read_fd,
- int *message_read_fd, int *fork_child, gchar **msg)
+ int *message_read_fd, int *fork_child, gchar **msg, void(*update_cb)(void))
{
enum PIPES { PIPE_READ, PIPE_WRITE }; /* Constants 0 and 1 for PIPE_READ and PIPE_WRITE */
#ifdef _WIN32
@@ -912,7 +912,7 @@ sync_pipe_open_command(char** argv, int *data_read_fd,
}
/* we might wait for a moment till child is ready, so update screen now */
- main_window_update();
+ if (update_cb) update_cb();
return 0;
}
@@ -957,7 +957,7 @@ sync_pipe_close_command(int *data_read_fd, int *message_read_fd,
#define PIPE_BUF_SIZE 5120
static int
sync_pipe_run_command_actual(char** argv, gchar **data, gchar **primary_msg,
- gchar **secondary_msg)
+ gchar **secondary_msg, void(*update_cb)(void))
{
gchar *msg;
int data_pipe_read_fd, sync_pipe_read_fd, fork_child, ret;
@@ -974,7 +974,7 @@ sync_pipe_run_command_actual(char** argv, gchar **data, gchar **primary_msg,
ssize_t count;
ret = sync_pipe_open_command(argv, &data_pipe_read_fd, &sync_pipe_read_fd,
- &fork_child, &msg);
+ &fork_child, &msg, update_cb);
if (ret == -1) {
*primary_msg = msg;
*secondary_msg = NULL;
@@ -1133,7 +1133,7 @@ sync_pipe_run_command_actual(char** argv, gchar **data, gchar **primary_msg,
*/
static int
sync_pipe_run_command(char** argv, gchar **data, gchar **primary_msg,
- gchar **secondary_msg)
+ gchar **secondary_msg, void (*update_cb)(void))
{
int ret, i;
GTimeVal start_time;
@@ -1151,7 +1151,7 @@ sync_pipe_run_command(char** argv, gchar **data, gchar **primary_msg,
}
}
/* do the actual sync pipe run command */
- ret=sync_pipe_run_command_actual(argv, data, primary_msg, secondary_msg);
+ ret=sync_pipe_run_command_actual(argv, data, primary_msg, secondary_msg, update_cb);
if(logging_enabled){
g_get_current_time(&end_time);
@@ -1168,7 +1168,7 @@ sync_pipe_run_command(char** argv, gchar **data, gchar **primary_msg,
int
sync_interface_set_80211_chan(const gchar *iface, const char *freq, const gchar *type,
gchar **data, gchar **primary_msg,
- gchar **secondary_msg)
+ gchar **secondary_msg, void (*update_cb)(void))
{
int argc, ret;
char **argv;
@@ -1207,7 +1207,7 @@ sync_interface_set_80211_chan(const gchar *iface, const char *freq, const gchar
argv = sync_pipe_add_arg(argv, &argc, SIGNAL_PIPE_CTRL_ID_NONE);
#endif
- ret = sync_pipe_run_command(argv, data, primary_msg, secondary_msg);
+ ret = sync_pipe_run_command(argv, data, primary_msg, secondary_msg, update_cb);
g_free(opt);
return ret;
}
@@ -1226,7 +1226,7 @@ sync_interface_set_80211_chan(const gchar *iface, const char *freq, const gchar
*/
int
sync_interface_list_open(gchar **data, gchar **primary_msg,
- gchar **secondary_msg)
+ gchar **secondary_msg, void (*update_cb)(void))
{
int argc;
char **argv;
@@ -1236,7 +1236,7 @@ sync_interface_list_open(gchar **data, gchar **primary_msg,
argv = init_pipe_args(&argc);
if (!argv) {
- *primary_msg = g_strdup("We don't know where to find dumpcap.");
+ *primary_msg = g_strdup("We don't know where to find dumpcap..");
*secondary_msg = NULL;
*data = NULL;
return -1;
@@ -1250,7 +1250,7 @@ sync_interface_list_open(gchar **data, gchar **primary_msg,
argv = sync_pipe_add_arg(argv, &argc, "-Z");
argv = sync_pipe_add_arg(argv, &argc, SIGNAL_PIPE_CTRL_ID_NONE);
#endif
- return sync_pipe_run_command(argv, data, primary_msg, secondary_msg);
+ return sync_pipe_run_command(argv, data, primary_msg, secondary_msg, update_cb);
}
/*
@@ -1268,7 +1268,7 @@ sync_interface_list_open(gchar **data, gchar **primary_msg,
int
sync_if_capabilities_open(const gchar *ifname, gboolean monitor_mode,
gchar **data, gchar **primary_msg,
- gchar **secondary_msg)
+ gchar **secondary_msg, void (*update_cb)(void))
{
int argc;
char **argv;
@@ -1296,7 +1296,7 @@ sync_if_capabilities_open(const gchar *ifname, gboolean monitor_mode,
argv = sync_pipe_add_arg(argv, &argc, "-Z");
argv = sync_pipe_add_arg(argv, &argc, SIGNAL_PIPE_CTRL_ID_NONE);
#endif
- return sync_pipe_run_command(argv, data, primary_msg, secondary_msg);
+ return sync_pipe_run_command(argv, data, primary_msg, secondary_msg, update_cb);
}
/*
@@ -1306,7 +1306,7 @@ sync_if_capabilities_open(const gchar *ifname, gboolean monitor_mode,
* that must be g_free()d, and -1 will be returned.
*/
int
-sync_interface_stats_open(int *data_read_fd, int *fork_child, gchar **msg)
+sync_interface_stats_open(int *data_read_fd, int *fork_child, gchar **msg, void (*update_cb)(void))
{
int argc;
char **argv;
@@ -1338,7 +1338,7 @@ sync_interface_stats_open(int *data_read_fd, int *fork_child, gchar **msg)
argv = sync_pipe_add_arg(argv, &argc, SIGNAL_PIPE_CTRL_ID_NONE);
#endif
ret = sync_pipe_open_command(argv, data_read_fd, &message_read_fd,
- fork_child, msg);
+ fork_child, msg, update_cb);
if (ret == -1)
return -1;
diff --git a/capture_sync.h b/capture_sync.h
index 337abc5819..8da65956fe 100644
--- a/capture_sync.h
+++ b/capture_sync.h
@@ -47,7 +47,7 @@
* @return TRUE if a capture could be started, FALSE if not
*/
extern gboolean
-sync_pipe_start(capture_options *capture_opts, capture_session *cap_session);
+sync_pipe_start(capture_options *capture_opts, capture_session *cap_session, void(*update_cb)(void));
/** User wants to stop capturing, gracefully close the capture child */
extern void
@@ -61,22 +61,22 @@ sync_pipe_kill(int fork_child);
extern int
sync_interface_set_80211_chan(const gchar *iface, const char *freq, const gchar *type,
gchar **data, gchar **primary_msg,
- gchar **secondary_msg);
+ gchar **secondary_msg, void (*update_cb)(void));
/** Get an interface list using dumpcap */
extern int
sync_interface_list_open(gchar **data, gchar **primary_msg,
- gchar **secondary_msg);
+ gchar **secondary_msg, void (*update_cb)(void));
/** Get interface capabilities using dumpcap */
extern int
sync_if_capabilities_open(const gchar *ifname, gboolean monitor_mode,
gchar **data, gchar **primary_msg,
- gchar **secondary_msg);
+ gchar **secondary_msg, void (*update_cb)(void));
/** Start getting interface statistics using dumpcap. */
extern int
-sync_interface_stats_open(int *read_fd, int *fork_child, gchar **msg);
+sync_interface_stats_open(int *read_fd, int *fork_child, gchar **msg, void (*update_cb)(void));
/** Stop gathering statistics. */
extern int
diff --git a/capture_ui_utils.c b/capture_ui_utils.c
index d2bcc5218a..b0dd741382 100644
--- a/capture_ui_utils.c
+++ b/capture_ui_utils.c
@@ -290,7 +290,7 @@ get_interface_descriptive_name(const char *if_name)
/* No, we don't have a user-supplied description; did we get
one from the OS or libpcap? */
descr = NULL;
- if_list = capture_interface_list(&err, NULL);
+ if_list = capture_interface_list(&err, NULL, NULL);
if (if_list != NULL) {
if_entry = if_list;
do {
diff --git a/dumpcap.c b/dumpcap.c
index cda32a6ebd..875d15b63a 100644
--- a/dumpcap.c
+++ b/dumpcap.c
@@ -232,12 +232,14 @@ typedef enum {
STATE_EXPECT_DATA,
STATE_READ_DATA
} cap_pipe_state_t;
+
typedef enum {
PIPOK,
PIPEOF,
PIPERR,
PIPNEXIST
} cap_pipe_err_t;
+
typedef struct _pcap_options {
guint32 received;
guint32 dropped;
@@ -309,6 +311,7 @@ typedef struct _pcap_queue_element {
*/
static const char please_report[] =
"Please report this to the Wireshark developers.\n"
+ "http://bugs.wireshark.org/\n"
"(This is not a crash; please do not report it as such.)";
/*
@@ -929,7 +932,7 @@ show_filter_code(capture_options *capture_opts)
#endif
if (capture_child) {
/* Let our parent know we succeeded. */
- pipe_write_block(2, SP_SUCCESS, NULL);
+ pipe_write_block(2, SP_SUCCESS, NULL); ///
}
return TRUE;
}
@@ -949,7 +952,7 @@ show_filter_code(capture_options *capture_opts)
* just call get_interface_list().
*/
GList *
-capture_interface_list(int *err, char **err_str)
+capture_interface_list(int *err, char **err_str, void(*update_cb)(void) _U_)
{
return get_interface_list(err, err_str);
}
@@ -1288,7 +1291,7 @@ print_machine_readable_interfaces(GList *if_list)
if (capture_child) {
/* Let our parent know we succeeded. */
- pipe_write_block(2, SP_SUCCESS, NULL);
+ pipe_write_block(2, SP_SUCCESS, NULL); ///
}
i = 1; /* Interface id number */
@@ -1366,7 +1369,7 @@ print_machine_readable_if_capabilities(if_capabilities_t *caps)
if (capture_child) {
/* Let our parent know we succeeded. */
- pipe_write_block(2, SP_SUCCESS, NULL);
+ pipe_write_block(2, SP_SUCCESS, NULL); ///
}
if (caps->can_set_rfmon)
@@ -1442,7 +1445,7 @@ print_statistics_loop(gboolean machine_readable)
if (capture_child) {
/* Let our parent know we succeeded. */
- pipe_write_block(2, SP_SUCCESS, NULL);
+ pipe_write_block(2, SP_SUCCESS, NULL); ///
}
if (!machine_readable) {
@@ -4104,7 +4107,7 @@ set_80211_channel(const char *iface, const char *opt)
}
if (capture_child)
- pipe_write_block(2, SP_SUCCESS, NULL);
+ pipe_write_block(2, SP_SUCCESS, NULL); ///
ret = 0;
out:
@@ -4661,7 +4664,7 @@ main(int argc, char *argv[])
int err;
gchar *err_str;
- if_list = capture_interface_list(&err, &err_str);
+ if_list = capture_interface_list(&err, &err_str,NULL);
if (if_list == NULL) {
switch (err) {
case CANT_GET_INTERFACE_LIST:
@@ -4928,7 +4931,7 @@ report_packet_count(unsigned int packet_count)
if (capture_child) {
g_snprintf(tmp, sizeof(tmp), "%u", packet_count);
g_log(LOG_DOMAIN_CAPTURE_CHILD, G_LOG_LEVEL_DEBUG, "Packets: %s", tmp);
- pipe_write_block(2, SP_PACKET_COUNT, tmp);
+ pipe_write_block(2, SP_PACKET_COUNT, tmp); ///
} else {
count += packet_count;
fprintf(stderr, "\rPackets: %u ", count);
@@ -4942,7 +4945,7 @@ report_new_capture_file(const char *filename)
{
if (capture_child) {
g_log(LOG_DOMAIN_CAPTURE_CHILD, G_LOG_LEVEL_DEBUG, "File: %s", filename);
- pipe_write_block(2, SP_FILE, filename);
+ pipe_write_block(2, SP_FILE, filename); ///
} else {
#ifdef SIGINFO
/*
@@ -4981,7 +4984,7 @@ report_cfilter_error(capture_options *capture_opts, guint i, const char *errmsg)
if (capture_child) {
g_snprintf(tmp, sizeof(tmp), "%u:%s", i, errmsg);
g_log(LOG_DOMAIN_CAPTURE_CHILD, G_LOG_LEVEL_DEBUG, "Capture filter error: %s", errmsg);
- pipe_write_block(2, SP_BAD_FILTER, tmp);
+ pipe_write_block(2, SP_BAD_FILTER, tmp); ///
} else {
/*
* clopts_step_invalid_capfilter in test/suite-clopts.sh MUST match
@@ -5027,7 +5030,7 @@ report_packet_drops(guint32 received, guint32 pcap_drops, guint32 drops, guint32
"Packets received/dropped on interface %s: %u/%u (pcap:%u/dumpcap:%u/flushed:%u)",
name, received, total_drops, pcap_drops, drops, flushed);
/* XXX: Need to provide interface id, changes to consumers required. */
- pipe_write_block(2, SP_DROPS, tmp);
+ pipe_write_block(2, SP_DROPS, tmp); ///
} else {
fprintf(stderr,
"Packets received/dropped on interface '%s': %u/%u (pcap:%u/dumpcap:%u/flushed:%u) (%.1f%%)\n",
@@ -5087,6 +5090,10 @@ signal_pipe_check_running(void)
}
#endif
+
+
+
+
/*
* Editor modelines - http://www.wireshark.org/tools/modelines.html
*
diff --git a/tshark.c b/tshark.c
index c2f376fc0d..3c1413b4f7 100644
--- a/tshark.c
+++ b/tshark.c
@@ -1245,7 +1245,7 @@ main(int argc, char *argv[])
#endif
case 'D': /* Print a list of capture devices and exit */
#ifdef HAVE_LIBPCAP
- if_list = capture_interface_list(&err, &err_str);
+ if_list = capture_interface_list(&err, &err_str,NULL);
if (if_list == NULL) {
switch (err) {
case CANT_GET_INTERFACE_LIST:
@@ -1959,7 +1959,7 @@ main(int argc, char *argv[])
if_capabilities_t *caps;
interface_opts = g_array_index(global_capture_opts.ifaces, interface_options, i);
- caps = capture_get_if_capabilities(interface_opts.name, interface_opts.monitor_mode, &err_str);
+ caps = capture_get_if_capabilities(interface_opts.name, interface_opts.monitor_mode, &err_str, NULL);
if (caps == NULL) {
cmdarg_err("%s", err_str);
g_free(err_str);
@@ -2274,7 +2274,7 @@ capture(void)
fflush(stderr);
g_string_free(str, TRUE);
- ret = sync_pipe_start(&global_capture_opts, &global_capture_session);
+ ret = sync_pipe_start(&global_capture_opts, &global_capture_session, NULL);
if (!ret)
return FALSE;
@@ -2341,13 +2341,6 @@ capture(void)
return TRUE;
}
-
-/* XXX - move the call to main_window_update() out of capture_sync.c */
-/* dummy for capture_sync.c to make linker happy */
-void main_window_update(void)
-{
-}
-
/* capture child detected an error */
void
capture_input_error_message(capture_session *cap_session _U_, char *error_msg, char *secondary_error_msg)
diff --git a/ui/gtk/capture_dlg.c b/ui/gtk/capture_dlg.c
index 5b1c467cc8..1ac27b3ead 100644
--- a/ui/gtk/capture_dlg.c
+++ b/ui/gtk/capture_dlg.c
@@ -5298,7 +5298,7 @@ capture_start_cb(GtkWidget *w _U_, gpointer d _U_)
this capture. */
collect_ifaces(&global_capture_opts);
- if (capture_start(&global_capture_opts, &global_capture_session)) {
+ if (capture_start(&global_capture_opts, &global_capture_session, main_window_update)) {
/* The capture succeeded, which means the capture filter syntax is
valid; add this capture filter to the recent capture filter list. */
for (i = 0; i < global_capture_opts.ifaces->len; i++) {
@@ -5796,7 +5796,7 @@ capture_prep_monitor_changed_cb(GtkWidget *monitor, gpointer argp _U_)
if_string = g_strdup(device.name);
monitor_mode = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(monitor));
- caps = capture_get_if_capabilities(if_string, monitor_mode, NULL);
+ caps = capture_get_if_capabilities(if_string, monitor_mode, NULL, main_window_update);
if (caps != NULL) {
g_signal_handlers_disconnect_by_func(linktype_combo_box, G_CALLBACK(select_link_type_cb), NULL );
@@ -6020,7 +6020,7 @@ void
refresh_local_interface_lists(void)
{
/* Reload the local interface list. */
- scan_local_interfaces();
+ scan_local_interfaces(main_window_update);
/* If there's an interfaces dialog up, refresh it. */
if (interfaces_dialog_window_present())
diff --git a/ui/gtk/main.c b/ui/gtk/main.c
index 981a316be8..49d7c0db87 100644
--- a/ui/gtk/main.c
+++ b/ui/gtk/main.c
@@ -2293,7 +2293,7 @@ main(int argc, char *argv[])
break;
case 'D': /* Print a list of capture devices and exit */
#ifdef HAVE_LIBPCAP
- if_list = capture_interface_list(&err, &err_str);
+ if_list = capture_interface_list(&err, &err_str,main_window_update);
if (if_list == NULL) {
switch (err) {
case CANT_GET_INTERFACE_LIST:
@@ -2800,7 +2800,7 @@ main(int argc, char *argv[])
}
#ifdef HAVE_LIBPCAP
- fill_in_local_interfaces();
+ fill_in_local_interfaces(main_window_update);
if (start_capture && list_link_layer_types) {
/* Specifying *both* is bogus. */
cmdarg_err("You can't specify both -L and a live capture.");
@@ -2870,7 +2870,7 @@ main(int argc, char *argv[])
device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
if (device.selected) {
#if defined(HAVE_PCAP_CREATE)
- caps = capture_get_if_capabilities(device.name, device.monitor_mode_supported, &err_str);
+ caps = capture_get_if_capabilities(device.name, device.monitor_mode_supported, &err_str, main_window_update);
#else
caps = capture_get_if_capabilities(device.name, FALSE, &err_str);
#endif
@@ -3133,7 +3133,7 @@ main(int argc, char *argv[])
to use for this capture. */
if (global_capture_opts.ifaces->len == 0)
collect_ifaces(&global_capture_opts);
- if (capture_start(&global_capture_opts, &global_capture_session)) {
+ if (capture_start(&global_capture_opts, &global_capture_session,main_window_update)) {
/* The capture started. Open stat windows; we do so after creating
the main window, to avoid GTK warnings, and after successfully
opening the capture file, so we know we have something to compute
diff --git a/ui/gtk/main_80211_toolbar.c b/ui/gtk/main_80211_toolbar.c
index 6b08d4cd16..0d244bc9a0 100644
--- a/ui/gtk/main_80211_toolbar.c
+++ b/ui/gtk/main_80211_toolbar.c
@@ -43,6 +43,7 @@
#include "ui/recent.h"
#include "ui/gtk/old-gtk-compat.h"
+#include "ui/ui_util.h"
#include "ui/gtk/main_80211_toolbar.h"
#include <ws80211_utils.h>
@@ -175,7 +176,7 @@ tb80211_do_set_channel(char *iface, int freq, int type)
freq_s = g_strdup_printf("%d", freq);
type_s = ws80211_chan_type_to_str(type);
ret = sync_interface_set_80211_chan(iface, freq_s, type_s,
- &data, &primary_msg, &secondary_msg);
+ &data, &primary_msg, &secondary_msg, main_window_update);
/* Parse the error msg */
if (ret && primary_msg) {
diff --git a/ui/gtk/main_welcome.c b/ui/gtk/main_welcome.c
index 215c6fa20c..fd39bbedb9 100644
--- a/ui/gtk/main_welcome.c
+++ b/ui/gtk/main_welcome.c
@@ -47,6 +47,7 @@
#include "ui/recent.h"
#include "ui/simple_dialog.h"
#include "ui/utf8_entities.h"
+#include "ui/ui_util.h"
#include "ui/gtk/gui_utils.h"
#include "ui/gtk/color_utils.h"
@@ -1068,7 +1069,7 @@ static void fill_capture_box(void)
/* run capture_interface_list(), not to get the interfaces, but to detect
* any errors, if there is an error, display an appropriate message in the gui */
- capture_interface_list(&error, &err_str);
+ capture_interface_list(&error, &err_str,main_window_update);
switch (error) {
case CANT_GET_INTERFACE_LIST:
@@ -1297,7 +1298,7 @@ welcome_new(void)
g_object_set_data(G_OBJECT(welcome_hb), CAPTURE_VIEW, topic_capture_to_fill);
#ifdef HAVE_LIBPCAP
- fill_in_local_interfaces();
+ fill_in_local_interfaces(main_window_update);
fill_capture_box();
/* capture help topic */
diff --git a/ui/gtk/prefs_capture.c b/ui/gtk/prefs_capture.c
index df54c62f90..010984c6e6 100644
--- a/ui/gtk/prefs_capture.c
+++ b/ui/gtk/prefs_capture.c
@@ -37,6 +37,7 @@
#include "ui/capture_globals.h"
#include "ui/iface_lists.h"
#include "ui/simple_dialog.h"
+#include "ui/ui_util.h"
#include "ui/gtk/prefs_capture.h"
#include "ui/gtk/prefs_dlg.h"
@@ -160,7 +161,7 @@ capture_prefs_show(void)
/*
* XXX - what if we can't get the list?
*/
- if_list = capture_interface_list(&err, NULL);
+ if_list = capture_interface_list(&err, NULL, main_window_update);
combo_list = build_capture_combo_list(if_list, FALSE);
free_interface_list(if_list);
if (combo_list != NULL) {
@@ -1076,7 +1077,7 @@ ifopts_description_to_val (const char *if_name, gboolean monitor_mode, const cha
if_capabilities_t *caps;
int dlt = -1;
- caps = capture_get_if_capabilities(if_name, monitor_mode, NULL);
+ caps = capture_get_if_capabilities(if_name, monitor_mode, NULL, main_window_update);
if (caps != NULL) {
if (caps->data_link_types != NULL) {
GList *lt_entry;
@@ -1186,9 +1187,9 @@ ifopts_edit_ifsel_cb(GtkTreeSelection *selection _U_,
* to the interface capabilities of the selected interface
*/
#ifdef HAVE_PCAP_CREATE
- caps = capture_get_if_capabilities(if_name, monitor_mode, NULL);
+ caps = capture_get_if_capabilities(if_name, monitor_mode, NULL, main_window_update);
#else
- caps = capture_get_if_capabilities(if_name, FALSE, NULL);
+ caps = capture_get_if_capabilities(if_name, FALSE, NULL, main_window_update);
#endif
if (caps != NULL) {
#ifdef HAVE_PCAP_CREATE
@@ -1304,7 +1305,7 @@ ifopts_edit_monitor_changed_cb(GtkToggleButton *tbt, gpointer udata)
gtk_list_store_set (list_store, &list_iter,
DEF_MONITOR_MODE_COLUMN, monitor_mode,
-1);
- caps = capture_get_if_capabilities(if_name, monitor_mode, NULL);
+ caps = capture_get_if_capabilities(if_name, monitor_mode, NULL, main_window_update);
#else
/* no monitor-mode support */
caps = capture_get_if_capabilities(if_name, FALSE, NULL);
@@ -1620,7 +1621,7 @@ ifopts_options_add(GtkListStore *list_store, if_info_t *if_info)
#ifdef HAVE_PCAP_CREATE
/* get default monitor mode setting */
monitor_mode = prefs_capture_device_monitor_mode(if_info->name);
- caps = capture_get_if_capabilities(if_info->name, monitor_mode, NULL);
+ caps = capture_get_if_capabilities(if_info->name, monitor_mode, NULL, main_window_update);
#else
/* no monitor-mode support */
caps = capture_get_if_capabilities(if_info->name, FALSE, NULL);
@@ -1774,7 +1775,7 @@ ifopts_if_liststore_add(void)
int err;
gchar *err_str;
- if_list = capture_interface_list(&err, &err_str); /* if_list = ptr to first element of list (or NULL) */
+ if_list = capture_interface_list(&err, &err_str, main_window_update); /* if_list = ptr to first element of list (or NULL) */
if (if_list == NULL) {
if (err != NO_INTERFACES_FOUND) {
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_str);
diff --git a/ui/gtk/voip_calls.c b/ui/gtk/voip_calls.c
index 0798cb1b7b..d3599f7883 100644
--- a/ui/gtk/voip_calls.c
+++ b/ui/gtk/voip_calls.c
@@ -74,6 +74,9 @@
#endif /* HAVE_LIBPORTAUDIO */
+#define DUMP_PTR1(p) printf("#=> %p\n",p)
+#define DUMP_PTR2(p) printf("==> %p\n",p)
+
const char *voip_call_state_name[8]={
"",
"CALL SETUP",
@@ -1526,7 +1529,8 @@ q931_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co
/* remove this LRQ/LCF call entry because we have found the Setup that match them */
g_free(tmp_listinfo->from_identity);
g_free(tmp_listinfo->to_identity);
- g_free(tmp2_h323info->guid);
+ DUMP_PTR2(tmp2_h323info->guid);
+ g_free(tmp2_h323info->guid);
list2 = g_list_first(tmp2_h323info->h245_list);
while (list2)
@@ -1745,6 +1749,7 @@ static void add_h245_Address(h323_calls_info_t *h323info, h245_address_t *h245_
static void free_h225_info(gpointer p) {
h323_calls_info_t *tmp_h323info = (h323_calls_info_t *)p;
+ DUMP_PTR2(tmp_h323info->guid);
g_free(tmp_h323info->guid);
if (tmp_h323info->h245_list) {
@@ -1843,6 +1848,8 @@ H225calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con
tmp_h323info = (h323_calls_info_t *)callsinfo->prot_info;
g_assert(tmp_h323info != NULL);
tmp_h323info->guid = (e_guid_t *)g_memdup(&pi->guid, sizeof pi->guid);
+ DUMP_PTR1(tmp_h323info->guid);
+
tmp_h323info->h225SetupAddr.type = AT_NONE;
tmp_h323info->h225SetupAddr.len = 0;
tmp_h323info->h245_list = NULL;
diff --git a/ui/iface_lists.c b/ui/iface_lists.c
index 4741424859..0ec6efcad0 100644
--- a/ui/iface_lists.c
+++ b/ui/iface_lists.c
@@ -63,7 +63,7 @@ if_list_comparator_alph(const void *first_arg, const void *second_arg)
* those interfaces.
*/
void
-scan_local_interfaces(void)
+scan_local_interfaces(void (*update_cb)(void))
{
GList *if_entry, *lt_entry, *if_list;
if_info_t *if_info, *temp;
@@ -94,7 +94,7 @@ scan_local_interfaces(void)
}
/* Scan through the list and build a list of strings to display. */
- if_list = capture_interface_list(&err, NULL);
+ if_list = capture_interface_list(&err, NULL, update_cb);
count = 0;
for (if_entry = if_list; if_entry != NULL; if_entry = g_list_next(if_entry)) {
if_info = (if_info_t *)if_entry->data;
@@ -160,7 +160,7 @@ scan_local_interfaces(void)
}
device.type = if_info->type;
monitor_mode = prefs_capture_device_monitor_mode(if_info->name);
- caps = capture_get_if_capabilities(if_info->name, monitor_mode, NULL);
+ caps = capture_get_if_capabilities(if_info->name, monitor_mode, NULL, update_cb);
for (; (curr_addr = g_slist_nth(if_info->addrs, ips)) != NULL; ips++) {
temp_addr = (if_addr_t *)g_malloc0(sizeof(if_addr_t));
if (ips != 0) {
@@ -347,7 +347,7 @@ scan_local_interfaces(void)
* record how long it takes in the info log.
*/
void
-fill_in_local_interfaces(void)
+fill_in_local_interfaces(void(*update_cb)(void))
{
GTimeVal start_time;
GTimeVal end_time;
@@ -360,7 +360,7 @@ fill_in_local_interfaces(void)
if (!initialized) {
/* do the actual work */
- scan_local_interfaces();
+ scan_local_interfaces(update_cb);
initialized = TRUE;
}
/* log how long it took */
diff --git a/ui/iface_lists.h b/ui/iface_lists.h
index 8cc4888783..7930ab6c37 100644
--- a/ui/iface_lists.h
+++ b/ui/iface_lists.h
@@ -41,12 +41,12 @@ extern gint if_list_comparator_alph(const void *first_arg, const void *second_ar
* Get the global interface list. Generate it if we haven't
* done so already.
*/
-extern void fill_in_local_interfaces(void);
+extern void fill_in_local_interfaces(void(*update_cb)(void));
/*
* Update the global interface list.
*/
-extern void scan_local_interfaces(void);
+extern void scan_local_interfaces(void (*update_cb)(void));
extern void hide_interface(gchar* new_hide);
#endif /* HAVE_LIBPCAP */