MINOR: checks: Use dedicated function to handle onsuccess/onerror messages

error and success messages produced when tcp-check healthchecks end are now
handled in dedicated functions.
diff --git a/src/checks.c b/src/checks.c
index 20280bd..6a28b54 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -2763,6 +2763,96 @@
 	return rule->index + 1;
 }
 
+static void tcpcheck_onerror_message(struct buffer *msg, struct check *check, struct tcpcheck_rule *rule,
+				     int match, struct ist info)
+{
+	struct sample *smp;
+
+	if (istlen(info)) {
+		chunk_strncat(msg, info.ptr, info.len);
+		goto comment;
+	}
+	else if (!LIST_ISEMPTY(&rule->expect.onerror_fmt)) {
+		msg->data += sess_build_logline(check->sess, NULL, b_tail(msg), b_room(msg), &rule->expect.onerror_fmt);
+		goto comment;
+	}
+
+	chunk_strcat(msg, (match ? "TCPCHK matched unwanted content" : "TCPCHK did not match content"));
+	switch (rule->expect.type) {
+	case TCPCHK_EXPECT_STRING:
+		chunk_appendf(msg, " '%s' at step %d", rule->expect.string, tcpcheck_get_step_id(check, rule));
+		break;
+	case TCPCHK_EXPECT_BINARY:
+		chunk_appendf(msg, " (binary) at step %d", tcpcheck_get_step_id(check, rule));
+		break;
+	case TCPCHK_EXPECT_REGEX:
+		chunk_appendf(msg, " (regex) at step %d", tcpcheck_get_step_id(check, rule));
+		break;
+	case TCPCHK_EXPECT_REGEX_BINARY:
+		chunk_appendf(msg, " (binary regex) at step %d", tcpcheck_get_step_id(check, rule));
+
+		/* If references to the matched text were made, divide the
+		 * offsets by 2 to match offset of the original response buffer.
+		 */
+		if (rule->expect.with_capture) {
+			int i;
+
+			for (i = 1; i < MAX_MATCH && pmatch[i].rm_so != -1; i++) {
+				pmatch[i].rm_so /= 2; /* at first matched char. */
+				pmatch[i].rm_eo /= 2; /* at last matched char. */
+			}
+		}
+		break;
+	case TCPCHK_EXPECT_UNDEF:
+		/* Should never happen. */
+		return;
+	}
+
+  comment:
+	if (rule->comment) {
+		chunk_strcat(msg, " comment: ");
+		if (rule->expect.with_capture) {
+			int ret = exp_replace(b_tail(msg), b_room(msg), b_head(&check->bi), rule->comment, pmatch);
+			if (ret != -1) /* ignore comment if too large */
+				msg->data += ret;
+		}
+		else
+			chunk_strcat(msg, rule->comment);
+	}
+
+	if (rule->expect.status_expr) {
+		smp = sample_fetch_as_type(check->proxy, check->sess, NULL, SMP_OPT_DIR_RES | SMP_OPT_FINAL,
+					   rule->expect.status_expr, SMP_T_SINT);
+		if (smp)
+			check->code = smp->data.u.sint;
+	}
+
+	*(b_tail(msg)) = '\0';
+}
+
+static void tcpcheck_onsuccess_message(struct buffer *msg, struct check *check, struct tcpcheck_rule *rule,
+				       struct ist info)
+{
+	struct sample *smp;
+
+	if (istlen(info))
+		chunk_strncat(msg, info.ptr, info.len);
+	if (!LIST_ISEMPTY(&rule->expect.onsuccess_fmt))
+		msg->data += sess_build_logline(check->sess, NULL, b_tail(msg), b_room(msg),
+						&rule->expect.onsuccess_fmt);
+	else
+		chunk_strcat(msg, "(tcp-check)");
+
+	if (rule->expect.status_expr) {
+		smp = sample_fetch_as_type(check->proxy, check->sess, NULL, SMP_OPT_DIR_RES | SMP_OPT_FINAL,
+					   rule->expect.status_expr, SMP_T_SINT);
+		if (smp)
+			check->code = smp->data.u.sint;
+	}
+
+	*(b_tail(msg)) = '\0';
+}
+
 /* Evaluate a TCPCHK_ACT_CONNECT rule. It returns 1 to evaluate the next rule, 0
  * to wait and -1 to stop the check. */
 static enum tcpcheck_eval_ret tcpcheck_eval_connect(struct check *check, struct tcpcheck_rule *rule)
@@ -3126,70 +3216,13 @@
 	/* From this point on, we matched something we did not want, this is an error state. */
 	ret = TCPCHK_EVAL_STOP;
 	msg = alloc_trash_chunk();
-	if (!msg)
-		goto no_desc;
-
-	chunk_strcat(msg, (match ? "TCPCHK matched unwanted content" : "TCPCHK did not match content"));
-	switch (expect->type) {
-	case TCPCHK_EXPECT_STRING:
-		chunk_appendf(msg, " '%s' at step %d", expect->string, tcpcheck_get_step_id(check, rule));
-		break;
-	case TCPCHK_EXPECT_BINARY:
-		chunk_appendf(msg, " (binary) at step %d", tcpcheck_get_step_id(check, rule));
-		break;
-	case TCPCHK_EXPECT_REGEX:
-		chunk_appendf(msg, " (regex) at step %d", tcpcheck_get_step_id(check, rule));
-		break;
-	case TCPCHK_EXPECT_REGEX_BINARY:
-		chunk_appendf(msg, " (binary regex) at step %d", tcpcheck_get_step_id(check, rule));
-
-		/* If references to the matched text were made, divide the
-		 * offsets by 2 to match offset of the original response buffer.
-		 */
-		if (expect->with_capture) {
-			int i;
-
-			for (i = 1; i < MAX_MATCH && pmatch[i].rm_so != -1; i++) {
-				pmatch[i].rm_so /= 2; /* at first matched char. */
-				pmatch[i].rm_eo /= 2; /* at last matched char. */
-			}
-		}
-		break;
-	case TCPCHK_EXPECT_UNDEF:
-		/* Should never happen. */
-		goto no_desc;
-	}
-
-	if (!LIST_ISEMPTY(&expect->onerror_fmt)) {
-		chunk_strcat(msg, " comment: ");
-		msg->data += sess_build_logline(check->sess, NULL, b_tail(msg), b_room(msg), &expect->onerror_fmt);
-	}
-	else if (rule->comment) {
-		if (expect->with_capture) {
-			ret = exp_replace(b_tail(msg), b_room(msg), b_head(&check->bi), rule->comment, pmatch);
-			if (ret != -1) /* ignore comment if too large */
-				msg->data += ret;
-		}
-		else
-			chunk_appendf(msg, " comment: '%s'", rule->comment);
-	}
-
-	if (expect->status_expr) {
-		struct sample *smp;
-
-		smp = sample_fetch_as_type(check->proxy, check->sess, NULL,
-					   SMP_OPT_DIR_RES | SMP_OPT_FINAL,
-					   expect->status_expr, SMP_T_SINT);
-		if (smp)
-			check->code = smp->data.u.sint;
-	}
-
-  no_desc:
+	if (msg)
+		tcpcheck_onerror_message(msg, check, rule, match, ist(NULL));
 	set_server_check_status(check, expect->err_status, (msg ? b_head(msg) : NULL));
+	free_trash_chunk(msg);
 	ret = TCPCHK_EVAL_STOP;
 
   out:
-	free_trash_chunk(msg);
 	return ret;
 }
 
@@ -3396,26 +3429,11 @@
 
 	/* All rules was evaluated */
 	if (check->current_step && check->current_step->action == TCPCHK_ACT_EXPECT) {
-		if (!LIST_ISEMPTY(&check->current_step->expect.onsuccess_fmt)) {
-			msg = alloc_trash_chunk();
-			if (msg)
-				msg->data += sess_build_logline(check->sess, NULL, b_tail(msg), b_room(msg),
-								&check->current_step->expect.onsuccess_fmt);
-		}
-
-		if (check->current_step->expect.status_expr) {
-			struct sample *smp;
-
-			smp = sample_fetch_as_type(check->proxy, check->sess, NULL,
-						   SMP_OPT_DIR_RES | SMP_OPT_FINAL,
-						   check->current_step->expect.status_expr, SMP_T_SINT);
-			if (smp)
-				check->code = smp->data.u.sint;
-		}
+		msg = alloc_trash_chunk();
+		if (msg)
+			tcpcheck_onsuccess_message(msg, check, check->current_step, ist(NULL));
 	}
-
 	set_server_check_status(check, HCHK_STATUS_L7OKD, (msg ? b_head(msg) : "(tcp-check)"));
-	check->current_step = NULL;
 	free_trash_chunk(msg);
 
   out_end_tcpcheck: