diff --git a/plugins/netutils.c b/plugins/netutils.c
index 5017eb9e9651fe754aadc4473b7cd82b213d8bdb..c99983f03bd9e68a2cbeb348efce2d0b0a1ed1e3 100644 (file)
--- a/plugins/netutils.c
+++ b/plugins/netutils.c
if (result < 0) {
switch (errno) {
case ECONNREFUSED:
- switch (econn_refuse_state) {
- case STATE_OK:
- case STATE_WARNING:
- was_refused = TRUE;
- }
+ was_refused = TRUE;
break;
}
}
if (result == 0)
return STATE_OK;
- else if (was_refused)
- return econn_refuse_state;
+ else if (was_refused) {
+ switch (econn_refuse_state) { /* a user-defined expected outcome */
+ case STATE_OK:
+ case STATE_WARNING: /* user wants WARN or OK on refusal */
+ return econn_refuse_state;
+ break;
+ case STATE_CRITICAL: /* user did not set econn_refuse_state */
+ printf ("%s\n", strerror(errno));
+ return econn_refuse_state;
+ break;
+ default: /* it's a logic error if we do not end up in STATE_(OK|WARNING|CRITICAL) */
+ return STATE_UNKNOWN;
+ break;
+ }
+ }
else {
printf ("%s\n", strerror(errno));
return STATE_CRITICAL;
@@ -295,7 +304,7 @@ send_udp_request (int sd, const char *send_buffer, char *recv_buffer, int recv_s
int
send_request (int sd, int proto, const char *send_buffer, char *recv_buffer, int recv_size)
{
- int result;
+ int result = STATE_OK;
int send_result;
int recv_result;
struct timeval tv;