Skip to content

Commit

Permalink
fix: prevent gateway signer
Browse files Browse the repository at this point in the history
initializeing into market client
  • Loading branch information
LinZexiao committed Jul 13, 2022
1 parent 57985f4 commit 9fd4b9e
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 21 deletions.
2 changes: 1 addition & 1 deletion api/clients/modules.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ var ClientsOpts = func(server bool, mode string, mCfg *config.Messager, signerCf
func(s *builder.Settings) bool {
return len(signerCfg.SignerType) > 0 && len(signerCfg.Url) > 0
},
builder.Override(new(ISinger), NewISignerClient),
builder.Override(new(ISinger), NewISignerClient(server)),
builder.Override(ReplaceWalletMethod, ConvertWalletToISinge),
),
)
Expand Down
47 changes: 27 additions & 20 deletions api/clients/sign_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,28 +48,35 @@ type SignerParams struct {
Mgr minermgr.IAddrMgr `optional:"true"`
}

func NewISignerClient(mctx metrics.MetricsCtx, lc fx.Lifecycle, params SignerParams) (ISinger, error) {
var signer ISinger
var closer jsonrpc.ClientCloser
var err error
switch params.SignerCfg.SignerType {
case config.SignerTypeWallet:
signer, closer, err = newWalletClient(context.Background(), params.SignerCfg.Token, params.SignerCfg.Url)
case config.SignerTypeGateway:
signer, closer, err = newGatewayWalletClient(context.Background(), params.Mgr, params.SignerCfg)
default:
return nil, fmt.Errorf("unsupport sign type %s", params.SignerCfg.SignerType)
}
func NewISignerClient(isServer bool) func(metrics.MetricsCtx, fx.Lifecycle, SignerParams) (ISinger, error) {

lc.Append(fx.Hook{
OnStop: func(_ context.Context) error {
if closer != nil {
closer()
return func(mctx metrics.MetricsCtx, lc fx.Lifecycle, params SignerParams) (ISinger, error) {
var signer ISinger
var closer jsonrpc.ClientCloser
var err error
switch params.SignerCfg.SignerType {
case config.SignerTypeWallet:
signer, closer, err = newWalletClient(context.Background(), params.SignerCfg.Token, params.SignerCfg.Url)
case config.SignerTypeGateway:
if !isServer {
return nil, fmt.Errorf("gateway signer not supported in client mode")
}
return nil
},
})
return signer, err
signer, closer, err = newGatewayWalletClient(context.Background(), params.Mgr, params.SignerCfg)
default:
return nil, fmt.Errorf("unsupport sign type %s", params.SignerCfg.SignerType)
}

lc.Append(fx.Hook{
OnStop: func(_ context.Context) error {
if closer != nil {
closer()
}
return nil
},
})
return signer, err
}

}

func newWalletClient(ctx context.Context, token, url string) (*WalletClient, jsonrpc.ClientCloser, error) {
Expand Down

0 comments on commit 9fd4b9e

Please sign in to comment.