MEDIUM: Add helper function for failed checks

This consolidates some logic in preparation for enhancing it.

Signed-off-by: Simon Horman <horms@verge.net.au>
diff --git a/src/checks.c b/src/checks.c
index e34ed0f..6b7c382 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -603,6 +603,18 @@
 			set_server_enabled(check);
 }
 
+static void check_failed(struct check *check)
+{
+	struct server *s = check->server;
+
+	if (check->health > s->rise) {
+		check->health--; /* still good */
+		s->counters.failed_checks++;
+	}
+	else
+		set_server_down(check);
+}
+
 void health_adjust(struct server *s, short status)
 {
 	int failed;
@@ -660,13 +672,7 @@
 		case HANA_ONERR_FAILCHK:
 		/* simulate a failed health check */
 			set_server_check_status(&s->check, HCHK_STATUS_HANA, trash.str);
-
-			if (s->check.health > s->rise) {
-				s->check.health--; /* still good */
-				s->counters.failed_checks++;
-			}
-			else
-				set_server_down(&s->check);
+			check_failed(&s->check);
 
 			break;
 
@@ -1397,12 +1403,7 @@
 		/* here, we have seen a synchronous error, no fd was allocated */
 
 		check->state &= ~CHK_STATE_RUNNING;
-		if (check->health > s->rise) {
-			check->health--; /* still good */
-			s->counters.failed_checks++;
-		}
-		else
-			set_server_down(check);
+		check_failed(check);
 
 		/* we allow up to min(inter, timeout.connect) for a connection
 		 * to establish but only when timeout.check is set
@@ -1470,14 +1471,8 @@
 			conn_full_close(conn);
 		}
 
-		if (check->result & SRV_CHK_FAILED) {    /* a failure or timeout detected */
-			if (check->health > s->rise) {
-				check->health--; /* still good */
-				s->counters.failed_checks++;
-			}
-			else
-				set_server_down(check);
-		}
+		if (check->result & SRV_CHK_FAILED)  /* a failure or timeout detected */
+			check_failed(check);
 		else {  /* check was OK */
 			/* we may have to add/remove this server from the LB group */
 			if ((s->state & SRV_RUNNING) && (s->proxy->options & PR_O_DISABLE404)) {