[#543] object/get: Fix potential NPE on request forwarder
Request forwarding callback should be called only if set since it is an optional parameter. In GetRangeHash forwarder is never set. Call `forwarder` function only if it is non-nil. Remove no longer needed `hashOnly` option. Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
89b147ebe7
commit
b2002ffc6d
3 changed files with 3 additions and 13 deletions
|
@ -38,7 +38,7 @@ type execCtx struct {
|
||||||
|
|
||||||
curOff uint64
|
curOff uint64
|
||||||
|
|
||||||
head, hash bool
|
head bool
|
||||||
|
|
||||||
curProcEpoch uint64
|
curProcEpoch uint64
|
||||||
|
|
||||||
|
@ -71,12 +71,6 @@ func withPayloadRange(r *objectSDK.Range) execOption {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func hashOnly() execOption {
|
|
||||||
return func(c *execCtx) {
|
|
||||||
c.hash = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (exec *execCtx) setLogger(l *logger.Logger) {
|
func (exec *execCtx) setLogger(l *logger.Logger) {
|
||||||
req := "GET"
|
req := "GET"
|
||||||
if exec.headOnly() {
|
if exec.headOnly() {
|
||||||
|
@ -152,10 +146,6 @@ func (exec *execCtx) headOnly() bool {
|
||||||
return exec.head
|
return exec.head
|
||||||
}
|
}
|
||||||
|
|
||||||
func (exec *execCtx) hashOnly() bool {
|
|
||||||
return exec.hash
|
|
||||||
}
|
|
||||||
|
|
||||||
func (exec *execCtx) netmapEpoch() uint64 {
|
func (exec *execCtx) netmapEpoch() uint64 {
|
||||||
return exec.prm.common.NetmapEpoch()
|
return exec.prm.common.NetmapEpoch()
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ func (s *Service) GetRangeHash(ctx context.Context, prm RangeHashPrm) (*RangeHas
|
||||||
hash: util.NewSaltingWriter(h, prm.salt),
|
hash: util.NewSaltingWriter(h, prm.salt),
|
||||||
})
|
})
|
||||||
|
|
||||||
if err := s.getRange(ctx, rngPrm, hashOnly()); err != nil {
|
if err := s.getRange(ctx, rngPrm); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ func (c *clientCacheWrapper) get(addr string) (getClient, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *clientWrapper) getObject(exec *execCtx) (*objectSDK.Object, error) {
|
func (c *clientWrapper) getObject(exec *execCtx) (*objectSDK.Object, error) {
|
||||||
if !exec.assembling && !exec.hashOnly() {
|
if !exec.assembling && exec.prm.forwarder != nil {
|
||||||
return exec.prm.forwarder(c.client)
|
return exec.prm.forwarder(c.client)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue