Browse Source

Merge pull request #1257 from gcoxmoz/master

check_tcp: Fixing to return desired exit code
Sven Nierlein 10 years ago
parent
commit
0be10c669e
2 changed files with 8 additions and 6 deletions
  1. 1 1
      plugins/check_tcp.c
  2. 7 5
      plugins/netutils.c

+ 1 - 1
plugins/check_tcp.c

@@ -237,7 +237,7 @@ main (int argc, char **argv)
 	gettimeofday (&tv, NULL);
 
 	result = np_net_connect (server_address, server_port, &sd, PROTOCOL);
-	if (result == STATE_CRITICAL) return STATE_CRITICAL;
+	if (result == STATE_CRITICAL) return econn_refuse_state;
 
 #ifdef HAVE_SSL
 	if (flags & FLAG_SSL){

+ 7 - 5
plugins/netutils.c

@@ -161,6 +161,10 @@ process_request (const char *server_address, int server_port, int proto,
 int
 np_net_connect (const char *host_name, int port, int *sd, int proto)
 {
+        /* send back STATE_UNKOWN if there's an error
+           send back STATE_OK if we connect
+           send back STATE_CRITICAL if we can't connect.
+           Let upstream figure out what to send to the user. */
 	struct addrinfo hints;
 	struct addrinfo *r, *res;
 	struct sockaddr_un su;
@@ -250,16 +254,14 @@ np_net_connect (const char *host_name, int port, int *sd, int proto)
 	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 */
+		case STATE_WARNING:  /* user wants WARN or OK on refusal, or... */
+		case STATE_CRITICAL: /* user did not set econn_refuse_state, or wanted critical */
 			if (is_socket)
 				printf("connect to file socket %s: %s\n", host_name, strerror(errno));
 			else
 				printf("connect to address %s and port %d: %s\n",
 				       host_name, port, strerror(errno));
-			return econn_refuse_state;
+			return STATE_CRITICAL;
 			break;
 		default: /* it's a logic error if we do not end up in STATE_(OK|WARNING|CRITICAL) */
 			return STATE_UNKNOWN;