diff --git a/include/haproxy/check.h b/include/haproxy/check.h
index 8d70040..ed81244 100644
--- a/include/haproxy/check.h
+++ b/include/haproxy/check.h
@@ -52,6 +52,7 @@
 int spoe_handle_healthcheck_response(char *frame, size_t size, char *err, int errlen);
 
 int set_srv_agent_send(struct server *srv, const char *send);
+void set_srv_agent_addr(struct server *srv, struct sockaddr_storage *sk);
 
 /* Use this one only. This inline version only ensures that we don't
  * call the function when the observe mode is disabled.
diff --git a/src/check.c b/src/check.c
index e24050f..6888127 100644
--- a/src/check.c
+++ b/src/check.c
@@ -1526,8 +1526,10 @@
 		goto error;
 	}
 
-	srv->check.addr = srv->agent.addr = *sk;
-	srv->flags |= SRV_F_AGENTADDR;
+	srv->check.addr = *sk;
+	/* if agentaddr was never set, we can use addr */
+	if (!(srv->flags & SRV_F_AGENTADDR))
+		srv->agent.addr = *sk;
 
   out:
 	return err_code;
@@ -1537,21 +1539,23 @@
 	goto out;
 }
 
-
 /* Parse the "agent-addr" server keyword */
 static int srv_parse_agent_addr(char **args, int *cur_arg, struct proxy *curpx, struct server *srv,
 				char **errmsg)
 {
+	struct sockaddr_storage sk;
 	int err_code = 0;
 
 	if (!*(args[*cur_arg+1])) {
 		memprintf(errmsg, "'%s' expects an address as argument.", args[*cur_arg]);
 		goto error;
 	}
-	if(str2ip(args[*cur_arg+1], &srv->agent.addr) == NULL) {
+	memset(&sk, 0, sizeof(sk));
+	if (str2ip(args[*cur_arg + 1], &sk) == NULL) {
 		memprintf(errmsg, "parsing agent-addr failed. Check if '%s' is correct address.", args[*cur_arg+1]);
 		goto error;
 	}
+	set_srv_agent_addr(srv, &sk);
 
   out:
 	return err_code;
@@ -1730,6 +1734,13 @@
 	return 0;
 }
 
+/* set agent addr and apprropriate flag */
+inline void set_srv_agent_addr(struct server *srv, struct sockaddr_storage *sk)
+{
+	srv->agent.addr = *sk;
+	srv->flags |= SRV_F_AGENTADDR;
+}
+
 /* Parse the "agent-send" server keyword */
 static int srv_parse_agent_send(char **args, int *cur_arg, struct proxy *curpx, struct server *srv,
 				char **errmsg)
diff --git a/src/server.c b/src/server.c
index 8019dd1..ba85bb8 100644
--- a/src/server.c
+++ b/src/server.c
@@ -4383,9 +4383,14 @@
 			cli_err(appctx, "'set server <srv> agent' expects 'up' or 'down'.\n");
 	}
 	else if (strcmp(args[3], "agent-addr") == 0) {
+		struct sockaddr_storage sk;
+
+		memset(&sk, 0, sizeof(sk));
 		if (!(sv->agent.state & CHK_ST_ENABLED))
 			cli_err(appctx, "agent checks are not enabled on this server.\n");
-		else if (str2ip(args[4], &sv->agent.addr) == NULL)
+		else if (str2ip(args[4], &sk))
+			set_srv_agent_addr(sv, &sk);
+		else
 			cli_err(appctx, "incorrect addr address given for agent.\n");
 	}
 	else if (strcmp(args[3], "agent-send") == 0) {
