MINOR: server: enhance error precision when applying server state

server health checks and agent parameters are written the same way as
others to be able to enahcne code reuse: basically we make use of
parsing and assignment at the same place. It makes it difficult for
error handling to know whether srv object was modified partially or not.
The problem was already present with SRV resolution though.

I was a bit puzzled about the approach to take to be honest, and I did
not wanted to go into a full refactor, so I assumed it was ok to simply
notify whether the line was failed or partially applied.

Signed-off-by: William Dauchy <wdauchy@gmail.com>
diff --git a/src/server.c b/src/server.c
index be5c489..e13c0df 100644
--- a/src/server.c
+++ b/src/server.c
@@ -2625,6 +2625,7 @@
 	unsigned int port_svc;
 	char *srvrecord;
 	char *addr;
+	int partial_apply = 0;
 #ifdef USE_OPENSSL
 	int use_ssl;
 #endif
@@ -2795,6 +2796,7 @@
 		/* don't apply anything if one error has been detected */
 		if (msg->data)
 			goto out;
+		partial_apply = 1;
 
 		/* recover operational state and apply it to this server
 		 * and all servers tracking this one */
@@ -3031,9 +3033,12 @@
  out:
 	HA_SPIN_UNLOCK(SERVER_LOCK, &srv->lock);
 	if (msg->data) {
-		chunk_appendf(msg, "\n");
-		ha_warning("server-state application failed for server '%s/%s'%s",
-			   srv->proxy->id, srv->id, msg->area);
+		if (partial_apply == 1)
+			ha_warning("server-state partially applied for server '%s/%s'%s\n",
+				   srv->proxy->id, srv->id, msg->area);
+		else
+			ha_warning("server-state application failed for server '%s/%s'%s\n",
+				   srv->proxy->id, srv->id, msg->area);
 	}
  end:
 	free_trash_chunk(msg);