payload: extend headers test, add limit
... from _pkg.dev and drop headers parsing there.
This commit is contained in:
parent
01e2f32e47
commit
f636bb9b6e
4 changed files with 37 additions and 164 deletions
|
@ -5,6 +5,7 @@ import (
|
|||
|
||||
"github.com/CityOfZion/neo-go/pkg/core"
|
||||
"github.com/CityOfZion/neo-go/pkg/util"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
// Headers payload
|
||||
|
@ -12,6 +13,11 @@ type Headers struct {
|
|||
Hdrs []*core.Header
|
||||
}
|
||||
|
||||
// Users can at most request 2k header
|
||||
const (
|
||||
maxHeadersAllowed = 2000
|
||||
)
|
||||
|
||||
// DecodeBinary implements the Payload interface.
|
||||
func (p *Headers) DecodeBinary(r io.Reader) error {
|
||||
br := util.BinReader{R: r}
|
||||
|
@ -19,6 +25,11 @@ func (p *Headers) DecodeBinary(r io.Reader) error {
|
|||
if br.Err != nil {
|
||||
return br.Err
|
||||
}
|
||||
// C# node does it silently
|
||||
if lenHeaders > maxHeadersAllowed {
|
||||
log.Warnf("received %d headers, capping to %d", lenHeaders, maxHeadersAllowed)
|
||||
lenHeaders = maxHeadersAllowed
|
||||
}
|
||||
|
||||
p.Hdrs = make([]*core.Header, lenHeaders)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue