@@ -3,6 +3,7 @@ package signing
33import (
44 "errors"
55 "fmt"
6+ "sync"
67
78 cosmos_proto "github.com/cosmos/cosmos-proto"
89 gogoproto "github.com/cosmos/gogoproto/proto"
@@ -29,7 +30,7 @@ type Context struct {
2930 typeResolver protoregistry.MessageTypeResolver
3031 addressCodec address.Codec
3132 validatorAddressCodec address.Codec
32- getSignersFuncs map [protoreflect. FullName ] GetSignersFunc
33+ getSignersFuncs sync. Map
3334 customGetSignerFuncs map [protoreflect.FullName ]GetSignersFunc
3435 maxRecursionDepth int
3536}
@@ -110,7 +111,7 @@ func NewContext(options Options) (*Context, error) {
110111 typeResolver : protoTypes ,
111112 addressCodec : options .AddressCodec ,
112113 validatorAddressCodec : options .ValidatorAddressCodec ,
113- getSignersFuncs : map [protoreflect. FullName ] GetSignersFunc {},
114+ getSignersFuncs : sync. Map {},
114115 customGetSignerFuncs : customGetSignerFuncs ,
115116 maxRecursionDepth : options .MaxRecursionDepth ,
116117 }
@@ -338,14 +339,17 @@ func (c *Context) getGetSignersFn(messageDescriptor protoreflect.MessageDescript
338339 if ok {
339340 return f , nil
340341 }
341- f , ok = c .getSignersFuncs [messageDescriptor .FullName ()]
342+
343+ loadedFn , ok := c .getSignersFuncs .Load (messageDescriptor .FullName ())
342344 if ! ok {
343345 var err error
344346 f , err = c .makeGetSignersFunc (messageDescriptor )
345347 if err != nil {
346348 return nil , err
347349 }
348- c .getSignersFuncs [messageDescriptor .FullName ()] = f
350+ c .getSignersFuncs .Store (messageDescriptor .FullName (), f )
351+ } else {
352+ f = loadedFn .(GetSignersFunc )
349353 }
350354
351355 return f , nil
0 commit comments