diff --git a/pkg/services/object/head/res.go b/pkg/services/object/head/res.go index b64144f5..cad3542b 100644 --- a/pkg/services/object/head/res.go +++ b/pkg/services/object/head/res.go @@ -5,9 +5,13 @@ import ( ) type Response struct { - hdr *object.Object + hdr, rightChild *object.Object } func (r *Response) Header() *object.Object { return r.hdr } + +func (r *Response) RightChild() *object.Object { + return r.rightChild +} diff --git a/pkg/services/object/head/service.go b/pkg/services/object/head/service.go index 6bcd41a7..45e5bcb4 100644 --- a/pkg/services/object/head/service.go +++ b/pkg/services/object/head/service.go @@ -77,15 +77,18 @@ func (s *Service) Head(ctx context.Context, prm *Prm) (*Response, error) { addr.SetContainerID(prm.addr.GetContainerID()) addr.SetObjectID(rightChildID) - rightChild, err := s.Head(ctx, new(Prm).WithAddress(addr)) + r, err = s.Head(ctx, new(Prm).WithAddress(addr)) if err != nil { return nil, errors.Wrapf(err, "(%T) could not get right child header", s) } + rightChild := r.Header() + // TODO: check if received parent has requested address return &Response{ - hdr: object.NewFromSDK(rightChild.Header().GetParent()), + hdr: object.NewFromSDK(rightChild.GetParent()), + rightChild: rightChild, }, nil }