MEDIUM: connection: make sure all address producers allocate their address

This commit places calls to sockaddr_alloc() at the places where an address
is needed, and makes sure that the allocation is properly tested. This does
not add too many error paths since connection allocations are already in the
vicinity and share the same error paths. For the two cases where a
clear_addr() was called, instead the address was not allocated.
diff --git a/include/proto/connection.h b/include/proto/connection.h
index c1ce51d..6d2e784 100644
--- a/include/proto/connection.h
+++ b/include/proto/connection.h
@@ -675,6 +675,9 @@
 	if (!conn_ctrl_ready(conn) || !conn->ctrl->get_src)
 		return 0;
 
+	if (!sockaddr_alloc(&conn->src))
+		return 0;
+
 	if (conn->ctrl->get_src(conn->handle.fd, (struct sockaddr *)conn->src,
 	                        sizeof(*conn->src),
 	                        obj_type(conn->target) != OBJ_TYPE_LISTENER) == -1)
@@ -695,6 +698,9 @@
 	if (!conn_ctrl_ready(conn) || !conn->ctrl->get_dst)
 		return 0;
 
+	if (!sockaddr_alloc(&conn->dst))
+		return 0;
+
 	if (conn->ctrl->get_dst(conn->handle.fd, (struct sockaddr *)conn->dst,
 	                        sizeof(*conn->dst),
 	                        obj_type(conn->target) != OBJ_TYPE_LISTENER) == -1)