les: reject client if it makes too many invalid requests (#19691)

* les: reject client connection if it makes too much invalid req

* les: address comments

* les: use uint32

* les: fix variable name

* les: add invalid counter for duplicate invalid req
This commit is contained in:
gary rong
2019-06-12 19:09:40 +08:00
committed by Péter Szilágyi
parent b3f7609d7d
commit c8c3ebd593
3 changed files with 40 additions and 14 deletions

View File

@ -597,9 +597,10 @@ func TestStopResumeLes3(t *testing.T) {
expBuf := testBufLimit
var reqID uint64
header := pm.blockchain.CurrentHeader()
req := func() {
reqID++
sendRequest(peer.app, GetBlockHeadersMsg, reqID, testCost, &getBlockHeadersData{Origin: hashOrNumber{Hash: common.Hash{1}}, Amount: 1})
sendRequest(peer.app, GetBlockHeadersMsg, reqID, testCost, &getBlockHeadersData{Origin: hashOrNumber{Hash: header.Hash()}, Amount: 1})
}
for i := 1; i <= 5; i++ {
@ -607,8 +608,8 @@ func TestStopResumeLes3(t *testing.T) {
for expBuf >= testCost {
req()
expBuf -= testCost
if err := expectResponse(peer.app, BlockHeadersMsg, reqID, expBuf, nil); err != nil {
t.Errorf("expected response and failed: %v", err)
if err := expectResponse(peer.app, BlockHeadersMsg, reqID, expBuf, []*types.Header{header}); err != nil {
t.Fatalf("expected response and failed: %v", err)
}
}
// send some more requests in excess and expect a single StopMsg