[#501] object/put: relay requests for signed objects

Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
Evgenii Stratonikov 2021-05-27 17:25:29 +03:00 committed by Leonard Lyubich
parent a422f42ca9
commit 3468491224
5 changed files with 99 additions and 5 deletions

View file

@ -25,6 +25,8 @@ type distributedTarget struct {
nodeTargetInitializer func(*network.Address) transformer.ObjectTarget
relay func(*network.Address) error
fmt *object.FormatValidator
log *logger.Logger
@ -67,6 +69,13 @@ func (t *distributedTarget) Close() (*transformer.AccessIdentifiers, error) {
}
func (t *distributedTarget) sendObject(addr *network.Address) error {
if t.relay != nil {
err := t.relay(addr)
if err == nil || !errors.Is(err, errLocalAddress) {
return err
}
}
target := t.nodeTargetInitializer(addr)
if err := target.WriteHeader(t.obj); err != nil {