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
47feff36
Commit
47feff36
authored
Apr 03, 2015
by
Jeffrey Wilcke
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #627 from ethersphere/frontier/blockpool
Frontier/blockpool BUGFIX
parents
a6ca3d02
5cb1b414
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
11 additions
and
8 deletions
+11
-8
peers.go
blockpool/peers.go
+11
-8
No files found.
blockpool/peers.go
View file @
47feff36
...
@@ -133,13 +133,10 @@ func (self *peer) addError(code int, format string, params ...interface{}) {
...
@@ -133,13 +133,10 @@ func (self *peer) addError(code int, format string, params ...interface{}) {
self
.
addToBlacklist
(
self
.
id
)
self
.
addToBlacklist
(
self
.
id
)
}
}
// caller must hold peer lock
func
(
self
*
peer
)
setChainInfo
(
td
*
big
.
Int
,
c
common
.
Hash
)
{
func
(
self
*
peer
)
setChainInfo
(
td
*
big
.
Int
,
c
common
.
Hash
)
{
self
.
lock
.
Lock
()
defer
self
.
lock
.
Unlock
()
self
.
td
=
td
self
.
td
=
td
self
.
currentBlockHash
=
c
self
.
currentBlockHash
=
c
self
.
currentBlock
=
nil
self
.
currentBlock
=
nil
self
.
parentHash
=
common
.
Hash
{}
self
.
parentHash
=
common
.
Hash
{}
self
.
headSection
=
nil
self
.
headSection
=
nil
...
@@ -171,7 +168,7 @@ func (self *peers) requestBlocks(attempts int, hashes []common.Hash) {
...
@@ -171,7 +168,7 @@ func (self *peers) requestBlocks(attempts int, hashes []common.Hash) {
defer
self
.
lock
.
RUnlock
()
defer
self
.
lock
.
RUnlock
()
peerCount
:=
len
(
self
.
peers
)
peerCount
:=
len
(
self
.
peers
)
// on first attempt use the best peer
// on first attempt use the best peer
if
attempts
==
0
{
if
attempts
==
0
&&
self
.
best
!=
nil
{
plog
.
DebugDetailf
(
"request %v missing blocks from best peer <%s>"
,
len
(
hashes
),
self
.
best
.
id
)
plog
.
DebugDetailf
(
"request %v missing blocks from best peer <%s>"
,
len
(
hashes
),
self
.
best
.
id
)
self
.
best
.
requestBlocks
(
hashes
)
self
.
best
.
requestBlocks
(
hashes
)
return
return
...
@@ -219,10 +216,12 @@ func (self *peers) addPeer(
...
@@ -219,10 +216,12 @@ func (self *peers) addPeer(
return
return
}
}
self
.
lock
.
Lock
()
self
.
lock
.
Lock
()
defer
self
.
lock
.
Unlock
()
p
,
found
:=
self
.
peers
[
id
]
p
,
found
:=
self
.
peers
[
id
]
if
found
{
if
found
{
// when called on an already connected peer, it means a newBlockMsg is received
// when called on an already connected peer, it means a newBlockMsg is received
// peer head info is updated
// peer head info is updated
p
.
lock
.
Lock
()
if
p
.
currentBlockHash
!=
currentBlockHash
{
if
p
.
currentBlockHash
!=
currentBlockHash
{
previousBlockHash
=
p
.
currentBlockHash
previousBlockHash
=
p
.
currentBlockHash
plog
.
Debugf
(
"addPeer: Update peer <%s> with td %v and current block %s (was %v)"
,
id
,
td
,
hex
(
currentBlockHash
),
hex
(
previousBlockHash
))
plog
.
Debugf
(
"addPeer: Update peer <%s> with td %v and current block %s (was %v)"
,
id
,
td
,
hex
(
currentBlockHash
),
hex
(
previousBlockHash
))
...
@@ -232,6 +231,7 @@ func (self *peers) addPeer(
...
@@ -232,6 +231,7 @@ func (self *peers) addPeer(
self
.
status
.
values
.
NewBlocks
++
self
.
status
.
values
.
NewBlocks
++
self
.
status
.
lock
.
Unlock
()
self
.
status
.
lock
.
Unlock
()
}
}
p
.
lock
.
Unlock
()
}
else
{
}
else
{
p
=
self
.
newPeer
(
td
,
currentBlockHash
,
id
,
requestBlockHashes
,
requestBlocks
,
peerError
)
p
=
self
.
newPeer
(
td
,
currentBlockHash
,
id
,
requestBlockHashes
,
requestBlocks
,
peerError
)
...
@@ -243,7 +243,6 @@ func (self *peers) addPeer(
...
@@ -243,7 +243,6 @@ func (self *peers) addPeer(
plog
.
Debugf
(
"addPeer: add new peer <%v> with td %v and current block %s"
,
id
,
td
,
hex
(
currentBlockHash
))
plog
.
Debugf
(
"addPeer: add new peer <%v> with td %v and current block %s"
,
id
,
td
,
hex
(
currentBlockHash
))
}
}
self
.
lock
.
Unlock
()
// check if peer's current head block is known
// check if peer's current head block is known
if
self
.
bp
.
hasBlock
(
currentBlockHash
)
{
if
self
.
bp
.
hasBlock
(
currentBlockHash
)
{
...
@@ -269,7 +268,10 @@ func (self *peers) addPeer(
...
@@ -269,7 +268,10 @@ func (self *peers) addPeer(
}
else
{
}
else
{
// baseline is our own TD
// baseline is our own TD
currentTD
:=
self
.
bp
.
getTD
()
currentTD
:=
self
.
bp
.
getTD
()
if
self
.
best
!=
nil
{
bestpeer
:=
self
.
best
if
bestpeer
!=
nil
{
bestpeer
.
lock
.
Lock
()
defer
bestpeer
.
lock
.
Unlock
()
currentTD
=
self
.
best
.
td
currentTD
=
self
.
best
.
td
}
}
if
td
.
Cmp
(
currentTD
)
>
0
{
if
td
.
Cmp
(
currentTD
)
>
0
{
...
@@ -277,11 +279,12 @@ func (self *peers) addPeer(
...
@@ -277,11 +279,12 @@ func (self *peers) addPeer(
self
.
status
.
bestPeers
[
p
.
id
]
++
self
.
status
.
bestPeers
[
p
.
id
]
++
self
.
status
.
lock
.
Unlock
()
self
.
status
.
lock
.
Unlock
()
plog
.
Debugf
(
"addPeer: peer <%v> (td: %v > current td %v) promoted best peer"
,
id
,
td
,
currentTD
)
plog
.
Debugf
(
"addPeer: peer <%v> (td: %v > current td %v) promoted best peer"
,
id
,
td
,
currentTD
)
self
.
bp
.
switchPeer
(
self
.
best
,
p
)
self
.
bp
.
switchPeer
(
bestpeer
,
p
)
self
.
best
=
p
self
.
best
=
p
best
=
true
best
=
true
}
}
}
}
return
return
}
}
...
...
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