Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
whqwjb
go-ethereum
提交
47feff36
G
go-ethereum
项目概览
whqwjb
/
go-ethereum
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
go-ethereum
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
47feff36
编写于
4月 03, 2015
作者:
J
Jeffrey Wilcke
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #627 from ethersphere/frontier/blockpool
Frontier/blockpool BUGFIX
上级
a6ca3d02
5cb1b414
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
11 addition
and
8 deletion
+11
-8
blockpool/peers.go
blockpool/peers.go
+11
-8
未找到文件。
blockpool/peers.go
浏览文件 @
47feff36
...
...
@@ -133,13 +133,10 @@ func (self *peer) addError(code int, format string, params ...interface{}) {
self
.
addToBlacklist
(
self
.
id
)
}
// caller must hold peer lock
func
(
self
*
peer
)
setChainInfo
(
td
*
big
.
Int
,
c
common
.
Hash
)
{
self
.
lock
.
Lock
()
defer
self
.
lock
.
Unlock
()
self
.
td
=
td
self
.
currentBlockHash
=
c
self
.
currentBlock
=
nil
self
.
parentHash
=
common
.
Hash
{}
self
.
headSection
=
nil
...
...
@@ -171,7 +168,7 @@ func (self *peers) requestBlocks(attempts int, hashes []common.Hash) {
defer
self
.
lock
.
RUnlock
()
peerCount
:=
len
(
self
.
peers
)
// 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
)
self
.
best
.
requestBlocks
(
hashes
)
return
...
...
@@ -219,10 +216,12 @@ func (self *peers) addPeer(
return
}
self
.
lock
.
Lock
()
defer
self
.
lock
.
Unlock
()
p
,
found
:=
self
.
peers
[
id
]
if
found
{
// when called on an already connected peer, it means a newBlockMsg is received
// peer head info is updated
p
.
lock
.
Lock
()
if
p
.
currentBlockHash
!=
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
))
...
...
@@ -232,6 +231,7 @@ func (self *peers) addPeer(
self
.
status
.
values
.
NewBlocks
++
self
.
status
.
lock
.
Unlock
()
}
p
.
lock
.
Unlock
()
}
else
{
p
=
self
.
newPeer
(
td
,
currentBlockHash
,
id
,
requestBlockHashes
,
requestBlocks
,
peerError
)
...
...
@@ -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
))
}
self
.
lock
.
Unlock
()
// check if peer's current head block is known
if
self
.
bp
.
hasBlock
(
currentBlockHash
)
{
...
...
@@ -269,7 +268,10 @@ func (self *peers) addPeer(
}
else
{
// baseline is our own TD
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
}
if
td
.
Cmp
(
currentTD
)
>
0
{
...
...
@@ -277,11 +279,12 @@ func (self *peers) addPeer(
self
.
status
.
bestPeers
[
p
.
id
]
++
self
.
status
.
lock
.
Unlock
()
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
best
=
true
}
}
return
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录