summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--THANKS.in1
-rw-r--r--plugins/check_dig.c11
2 files changed, 10 insertions, 2 deletions
diff --git a/THANKS.in b/THANKS.in
index aef787c2..2cfa54ec 100644
--- a/THANKS.in
+++ b/THANKS.in
@@ -305,3 +305,4 @@ Geoff Oakham
305Tim Laszlo 305Tim Laszlo
306Stéphane Bortzmeyer 306Stéphane Bortzmeyer
307Luca Corti 307Luca Corti
308Jethro Carr
diff --git a/plugins/check_dig.c b/plugins/check_dig.c
index 7575995d..5638017c 100644
--- a/plugins/check_dig.c
+++ b/plugins/check_dig.c
@@ -48,6 +48,8 @@ void print_usage (void);
48 48
49#define UNDEFINED 0 49#define UNDEFINED 0
50#define DEFAULT_PORT 53 50#define DEFAULT_PORT 53
51#define DEFAULT_TRIES 3
52#define DEFAULT_TIMEOUT 10
51 53
52char *query_address = NULL; 54char *query_address = NULL;
53char *record_type = "A"; 55char *record_type = "A";
@@ -57,6 +59,7 @@ char *dig_args = "";
57char *query_transport = ""; 59char *query_transport = "";
58int verbose = FALSE; 60int verbose = FALSE;
59int server_port = DEFAULT_PORT; 61int server_port = DEFAULT_PORT;
62int number_tries = DEFAULT_TRIES;
60double warning_interval = UNDEFINED; 63double warning_interval = UNDEFINED;
61double critical_interval = UNDEFINED; 64double critical_interval = UNDEFINED;
62struct timeval tv; 65struct timeval tv;
@@ -72,6 +75,7 @@ main (int argc, char **argv)
72 long microsec; 75 long microsec;
73 double elapsed_time; 76 double elapsed_time;
74 int result = STATE_UNKNOWN; 77 int result = STATE_UNKNOWN;
78 timeout_interval = DEFAULT_TIMEOUT;
75 79
76 setlocale (LC_ALL, ""); 80 setlocale (LC_ALL, "");
77 bindtextdomain (PACKAGE, LOCALEDIR); 81 bindtextdomain (PACKAGE, LOCALEDIR);
@@ -87,9 +91,12 @@ main (int argc, char **argv)
87 if (process_arguments (argc, argv) == ERROR) 91 if (process_arguments (argc, argv) == ERROR)
88 usage_va(_("Could not parse arguments")); 92 usage_va(_("Could not parse arguments"));
89 93
94 /* dig applies the timeout to each try, so we need to work around this */
95 int timeout_interval_dig = ceil((double) timeout_interval / (double) number_tries);
96
90 /* get the command to run */ 97 /* get the command to run */
91 xasprintf (&command_line, "%s %s @%s -p %d %s -t %s %s", 98 xasprintf (&command_line, "%s @%s -p %d %s -t %s %s %s +tries=%d +time=%d",
92 PATH_TO_DIG, query_transport, dns_server, server_port, query_address, record_type, dig_args); 99 PATH_TO_DIG, dns_server, server_port, query_address, record_type, dig_args, query_transport, number_tries, timeout_interval_dig);
93 100
94 alarm (timeout_interval); 101 alarm (timeout_interval);
95 gettimeofday (&tv, NULL); 102 gettimeofday (&tv, NULL);