aboutsummaryrefslogtreecommitdiffstats
path: root/gtk
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2003-07-22 03:14:31 +0000
committerGerald Combs <gerald@wireshark.org>2003-07-22 03:14:31 +0000
commitd98ee5ef393b70dee2a385b352642209eab97cb5 (patch)
treea2b8485cbffc7874bab3167b60e2caeb2fb6e5cc /gtk
parent7dd93bc1f6ef6ebedddfbae01874fbf326a5740b (diff)
Add two preferences to control ADNS, one to enable/disable it and one to
set its concurrency level. Fix an ADNS queueing bug. svn path=/trunk/; revision=8063
Diffstat (limited to 'gtk')
-rw-r--r--gtk/file_dlg.c5
-rw-r--r--gtk/nameres_prefs.c47
2 files changed, 47 insertions, 5 deletions
diff --git a/gtk/file_dlg.c b/gtk/file_dlg.c
index dd0858f83e..ea4e63d4aa 100644
--- a/gtk/file_dlg.c
+++ b/gtk/file_dlg.c
@@ -1,7 +1,7 @@
/* file_dlg.c
* Dialog boxes for handling files
*
- * $Id: file_dlg.c,v 1.56 2003/07/18 20:55:11 oabad Exp $
+ * $Id: file_dlg.c,v 1.57 2003/07/22 03:14:30 gerald Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -42,6 +42,7 @@
#include "dlg_utils.h"
#include "main.h"
#include "compat_macros.h"
+#include "prefs.h"
static void file_open_ok_cb(GtkWidget *w, GtkFileSelection *fs);
static void file_open_destroy_cb(GtkWidget *win, gpointer user_data);
@@ -234,7 +235,7 @@ file_open_ok_cb(GtkWidget *w, GtkFileSelection *fs) {
cfile.rfcode = rfcode;
/* Set the global resolving variable */
- g_resolv_flags = 0;
+ g_resolv_flags = prefs.name_resolve & RESOLV_CONCURRENT;
m_resolv_cb = OBJECT_GET_DATA(w, E_FILE_M_RESOLVE_KEY);
g_resolv_flags |= GTK_TOGGLE_BUTTON (m_resolv_cb)->active ? RESOLV_MAC : RESOLV_NONE;
n_resolv_cb = OBJECT_GET_DATA(w, E_FILE_N_RESOLVE_KEY);
diff --git a/gtk/nameres_prefs.c b/gtk/nameres_prefs.c
index dd67909c4a..1e662d7f29 100644
--- a/gtk/nameres_prefs.c
+++ b/gtk/nameres_prefs.c
@@ -1,7 +1,7 @@
/* nameres_prefs.c
* Dialog box for name resolution preferences
*
- * $Id: nameres_prefs.c,v 1.7 2002/11/11 18:57:00 oabad Exp $
+ * $Id: nameres_prefs.c,v 1.8 2003/07/22 03:14:31 gerald Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -41,13 +41,25 @@
#define M_RESOLVE_KEY "m_resolve"
#define N_RESOLVE_KEY "n_resolve"
#define T_RESOLVE_KEY "t_resolve"
-
-#define RESOLV_TABLE_ROWS 3
+#ifdef HAVE_GNU_ADNS
+# define C_RESOLVE_KEY "c_resolve"
+# define RESOLVE_CONCURRENCY_KEY "resolve_concurrency"
+#endif /* HAVE_GNU_ADNS */
+
+#ifdef HAVE_GNU_ADNS
+# define RESOLV_TABLE_ROWS 5
+#else
+# define RESOLV_TABLE_ROWS 3
+#endif /* HAVE_GNU_ADNS */
GtkWidget*
nameres_prefs_show(void)
{
GtkWidget *main_tb, *main_vb;
GtkWidget *m_resolv_cb, *n_resolv_cb, *t_resolv_cb;
+#ifdef HAVE_GNU_ADNS
+ GtkWidget *c_resolv_cb, *resolv_concurrency_te;
+ char concur_str[10+1];
+#endif /* HAVE_GNU_ADNS */
/*
* XXX - it would be nice if the current setting of the resolver
@@ -88,6 +100,21 @@ nameres_prefs_show(void)
prefs.name_resolve & RESOLV_TRANSPORT);
OBJECT_SET_DATA(main_vb, T_RESOLVE_KEY, t_resolv_cb);
+#ifdef HAVE_GNU_ADNS
+ /* Enable concurrent (asynchronous) DNS lookups */
+ c_resolv_cb = create_preference_check_button(main_tb, 3,
+ "Enable concurrent DNS name resolution:", NULL,
+ prefs.name_resolve & RESOLV_CONCURRENT);
+ OBJECT_SET_DATA(main_vb, C_RESOLVE_KEY, c_resolv_cb);
+
+ /* Max concurrent requests */
+ sprintf(concur_str, "%d", prefs.name_resolve_concurrency);
+ resolv_concurrency_te = create_preference_entry(main_tb, 4,
+ "Maximum concurrent requests:", NULL, concur_str);
+ OBJECT_SET_DATA(main_vb, RESOLVE_CONCURRENCY_KEY, resolv_concurrency_te);
+
+#endif /* HAVE_GNU_ADNS */
+
/* Show 'em what we got */
gtk_widget_show_all(main_vb);
@@ -98,15 +125,29 @@ void
nameres_prefs_fetch(GtkWidget *w)
{
GtkWidget *m_resolv_cb, *n_resolv_cb, *t_resolv_cb;
+#ifdef HAVE_GNU_ADNS
+ GtkWidget *c_resolv_cb, *resolv_concurrency_te;
+#endif /* HAVE_GNU_ADNS */
m_resolv_cb = (GtkWidget *)OBJECT_GET_DATA(w, M_RESOLVE_KEY);
n_resolv_cb = (GtkWidget *)OBJECT_GET_DATA(w, N_RESOLVE_KEY);
t_resolv_cb = (GtkWidget *)OBJECT_GET_DATA(w, T_RESOLVE_KEY);
+#ifdef HAVE_GNU_ADNS
+ c_resolv_cb = (GtkWidget *)OBJECT_GET_DATA(w, C_RESOLVE_KEY);
+
+ resolv_concurrency_te = (GtkWidget *)OBJECT_GET_DATA(w, RESOLVE_CONCURRENCY_KEY);
+#endif /* HAVE_GNU_ADNS */
prefs.name_resolve = RESOLV_NONE;
prefs.name_resolve |= (GTK_TOGGLE_BUTTON (m_resolv_cb)->active ? RESOLV_MAC : RESOLV_NONE);
prefs.name_resolve |= (GTK_TOGGLE_BUTTON (n_resolv_cb)->active ? RESOLV_NETWORK : RESOLV_NONE);
prefs.name_resolve |= (GTK_TOGGLE_BUTTON (t_resolv_cb)->active ? RESOLV_TRANSPORT : RESOLV_NONE);
+#ifdef HAVE_GNU_ADNS
+ prefs.name_resolve |= (GTK_TOGGLE_BUTTON (c_resolv_cb)->active ? RESOLV_CONCURRENT : RESOLV_NONE);
+
+ prefs.name_resolve_concurrency = strtol (gtk_entry_get_text(
+ GTK_ENTRY(resolv_concurrency_te)), NULL, 10);
+#endif /* HAVE_GNU_ADNS */
}
void