diff --git a/src/checks.c b/src/checks.c
index 353b43b..c2fc87c 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -1614,13 +1614,14 @@
 	/* Maybe there were an older connection we were waiting on */
 	check->wait_list.events = 0;
 
+	/* FIXME WTA: we'll have to dynamically allocate the dst address here */
 	if (is_addr(&check->addr)) {
 		/* we'll connect to the check addr specified on the server */
-		conn->addr.to = check->addr;
+		*conn->dst = check->addr;
 	}
 	else {
 		/* we'll connect to the addr on the server */
-		conn->addr.to = s->addr;
+		*conn->dst = s->addr;
 	}
 
 	if (s->check.via_socks4 &&  (s->flags & SRV_F_SOCKS4_PROXY)) {
@@ -1628,21 +1629,24 @@
 		conn->flags |= CO_FL_SOCKS4;
 	}
 
-	proto = protocol_by_family(conn->addr.to.ss_family);
+	proto = protocol_by_family(conn->dst->ss_family);
 	conn->target = &s->obj_type;
 
-	if ((conn->addr.to.ss_family == AF_INET) || (conn->addr.to.ss_family == AF_INET6)) {
+	if ((conn->dst->ss_family == AF_INET) || (conn->dst->ss_family == AF_INET6)) {
 		int i = 0;
 
 		i = srv_check_healthcheck_port(check);
 		if (i == 0)
 			return SF_ERR_CHK_PORT;
 
-		set_host_port(&conn->addr.to, i);
+		set_host_port(conn->dst, i);
 	}
 
 	/* no client address */
-	clear_addr(&conn->addr.from);
+	/* FIXME WTA: we'll have to dynamically allocate the src address here
+	 * before clearing it, or better release it and make it null.
+	 */
+	clear_addr(conn->src);
 
 	conn_prepare(conn, proto, check->xprt);
 	if (conn_install_mux(conn, &mux_pt_ops, cs, s->proxy, NULL) < 0)
@@ -2858,25 +2862,29 @@
 			conn->target = s ? &s->obj_type : &proxy->obj_type;
 
 			/* no client address */
-			clear_addr(&conn->addr.from);
+			/* FIXME WTA: we'll have to dynamically allocate the src address here
+			 * before clearing it, or better release it and make it null.
+			 */
+			clear_addr(conn->src);
 
+			/* FIXME WTA: we'll have to dynamically allocate the dst address here */
 			if (is_addr(&check->addr)) {
 				/* we'll connect to the check addr specified on the server */
-				conn->addr.to = check->addr;
+				*conn->dst = check->addr;
 			}
 			else {
 				/* we'll connect to the addr on the server */
-				conn->addr.to = s->addr;
+				*conn->dst = s->addr;
 			}
-			proto = protocol_by_family(conn->addr.to.ss_family);
+			proto = protocol_by_family(conn->dst->ss_family);
 
 			/* port */
 			if (check->current_step->port)
-				set_host_port(&conn->addr.to, check->current_step->port);
+				set_host_port(conn->dst, check->current_step->port);
 			else if (check->port)
-				set_host_port(&conn->addr.to, check->port);
+				set_host_port(conn->dst, check->port);
 			else if (s->svc_port)
-				set_host_port(&conn->addr.to, s->svc_port);
+				set_host_port(conn->dst, s->svc_port);
 
 			if (check->current_step->conn_opts & TCPCHK_OPT_SSL) {
 				xprt = xprt_get(XPRT_SSL);
