add option to validate messages against expected tipset
This commit is contained in:
parent
58a85f378c
commit
44b52941f7
@ -215,6 +215,22 @@ func (c *client) processResponse(req *Request, res *Response) (*validatedRespons
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if options.ValidateMessages {
|
||||||
|
chain := make([]*BSTipSet, 0, resLength)
|
||||||
|
for i, resChain := range res.Chain {
|
||||||
|
next := &BSTipSet{
|
||||||
|
Blocks: req.TipSets[i].Blocks(),
|
||||||
|
Messages: resChain.Messages,
|
||||||
|
}
|
||||||
|
chain = append(chain, next)
|
||||||
|
}
|
||||||
|
|
||||||
|
err := c.validateCompressedIndices(chain)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return validRes, nil
|
return validRes, nil
|
||||||
|
@ -57,6 +57,8 @@ type Request struct {
|
|||||||
// Request options, see `Options` type for more details. Compressed
|
// Request options, see `Options` type for more details. Compressed
|
||||||
// in a single `uint64` to save space.
|
// in a single `uint64` to save space.
|
||||||
Options uint64
|
Options uint64
|
||||||
|
// Request tipsets for validation
|
||||||
|
TipSets []*types.TipSet
|
||||||
}
|
}
|
||||||
|
|
||||||
// `Request` processed and validated to query the tipsets needed.
|
// `Request` processed and validated to query the tipsets needed.
|
||||||
@ -71,6 +73,7 @@ type validatedRequest struct {
|
|||||||
const (
|
const (
|
||||||
Headers = 1 << iota
|
Headers = 1 << iota
|
||||||
Messages
|
Messages
|
||||||
|
Validate
|
||||||
)
|
)
|
||||||
|
|
||||||
// Decompressed options into separate struct members for easy access
|
// Decompressed options into separate struct members for easy access
|
||||||
@ -78,6 +81,7 @@ const (
|
|||||||
type parsedOptions struct {
|
type parsedOptions struct {
|
||||||
IncludeHeaders bool
|
IncludeHeaders bool
|
||||||
IncludeMessages bool
|
IncludeMessages bool
|
||||||
|
ValidateMessages bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (options *parsedOptions) noOptionsSet() bool {
|
func (options *parsedOptions) noOptionsSet() bool {
|
||||||
@ -89,6 +93,7 @@ func parseOptions(optfield uint64) *parsedOptions {
|
|||||||
return &parsedOptions{
|
return &parsedOptions{
|
||||||
IncludeHeaders: optfield&(uint64(Headers)) != 0,
|
IncludeHeaders: optfield&(uint64(Headers)) != 0,
|
||||||
IncludeMessages: optfield&(uint64(Messages)) != 0,
|
IncludeMessages: optfield&(uint64(Messages)) != 0,
|
||||||
|
ValidateMessages: optfield&(uint64(Validate)) != 0,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user