Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
fc4fee86
Unverified
Commit
fc4fee86
authored
Jun 12, 2019
by
Péter Szilágyi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
eth: enforce stricter known limits on idle peers
parent
50e3795e
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
24 additions
and
0 deletions
+24
-0
peer.go
eth/peer.go
+24
-0
No files found.
eth/peer.go
View file @
fc4fee86
...
...
@@ -196,9 +196,13 @@ func (p *peer) MarkTransaction(hash common.Hash) {
// SendTransactions sends transactions to the peer and includes the hashes
// in its transaction hash set for future reference.
func
(
p
*
peer
)
SendTransactions
(
txs
types
.
Transactions
)
error
{
// Mark all the transactions as known, but ensure we don't overflow our limits
for
_
,
tx
:=
range
txs
{
p
.
knownTxs
.
Add
(
tx
.
Hash
())
}
for
p
.
knownTxs
.
Cardinality
()
>=
maxKnownTxs
{
p
.
knownTxs
.
Pop
()
}
return
p2p
.
Send
(
p
.
rw
,
TxMsg
,
txs
)
}
...
...
@@ -207,9 +211,13 @@ func (p *peer) SendTransactions(txs types.Transactions) error {
func
(
p
*
peer
)
AsyncSendTransactions
(
txs
[]
*
types
.
Transaction
)
{
select
{
case
p
.
queuedTxs
<-
txs
:
// Mark all the transactions as known, but ensure we don't overflow our limits
for
_
,
tx
:=
range
txs
{
p
.
knownTxs
.
Add
(
tx
.
Hash
())
}
for
p
.
knownTxs
.
Cardinality
()
>=
maxKnownTxs
{
p
.
knownTxs
.
Pop
()
}
default
:
p
.
Log
()
.
Debug
(
"Dropping transaction propagation"
,
"count"
,
len
(
txs
))
}
...
...
@@ -218,9 +226,13 @@ func (p *peer) AsyncSendTransactions(txs []*types.Transaction) {
// SendNewBlockHashes announces the availability of a number of blocks through
// a hash notification.
func
(
p
*
peer
)
SendNewBlockHashes
(
hashes
[]
common
.
Hash
,
numbers
[]
uint64
)
error
{
// Mark all the block hashes as known, but ensure we don't overflow our limits
for
_
,
hash
:=
range
hashes
{
p
.
knownBlocks
.
Add
(
hash
)
}
for
p
.
knownBlocks
.
Cardinality
()
>=
maxKnownBlocks
{
p
.
knownBlocks
.
Pop
()
}
request
:=
make
(
newBlockHashesData
,
len
(
hashes
))
for
i
:=
0
;
i
<
len
(
hashes
);
i
++
{
request
[
i
]
.
Hash
=
hashes
[
i
]
...
...
@@ -235,7 +247,11 @@ func (p *peer) SendNewBlockHashes(hashes []common.Hash, numbers []uint64) error
func
(
p
*
peer
)
AsyncSendNewBlockHash
(
block
*
types
.
Block
)
{
select
{
case
p
.
queuedAnns
<-
block
:
// Mark all the block hash as known, but ensure we don't overflow our limits
p
.
knownBlocks
.
Add
(
block
.
Hash
())
for
p
.
knownBlocks
.
Cardinality
()
>=
maxKnownBlocks
{
p
.
knownBlocks
.
Pop
()
}
default
:
p
.
Log
()
.
Debug
(
"Dropping block announcement"
,
"number"
,
block
.
NumberU64
(),
"hash"
,
block
.
Hash
())
}
...
...
@@ -243,7 +259,11 @@ func (p *peer) AsyncSendNewBlockHash(block *types.Block) {
// SendNewBlock propagates an entire block to a remote peer.
func
(
p
*
peer
)
SendNewBlock
(
block
*
types
.
Block
,
td
*
big
.
Int
)
error
{
// Mark all the block hash as known, but ensure we don't overflow our limits
p
.
knownBlocks
.
Add
(
block
.
Hash
())
for
p
.
knownBlocks
.
Cardinality
()
>=
maxKnownBlocks
{
p
.
knownBlocks
.
Pop
()
}
return
p2p
.
Send
(
p
.
rw
,
NewBlockMsg
,
[]
interface
{}{
block
,
td
})
}
...
...
@@ -252,7 +272,11 @@ func (p *peer) SendNewBlock(block *types.Block, td *big.Int) error {
func
(
p
*
peer
)
AsyncSendNewBlock
(
block
*
types
.
Block
,
td
*
big
.
Int
)
{
select
{
case
p
.
queuedProps
<-
&
propEvent
{
block
:
block
,
td
:
td
}
:
// Mark all the block hash as known, but ensure we don't overflow our limits
p
.
knownBlocks
.
Add
(
block
.
Hash
())
for
p
.
knownBlocks
.
Cardinality
()
>=
maxKnownBlocks
{
p
.
knownBlocks
.
Pop
()
}
default
:
p
.
Log
()
.
Debug
(
"Dropping block propagation"
,
"number"
,
block
.
NumberU64
(),
"hash"
,
block
.
Hash
())
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment