Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
whqwjb
go-ethereum
提交
c8d8126b
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,体验更适合开发者的 AI 搜索 >>
提交
c8d8126b
编写于
4月 10, 2019
作者:
Z
Zsolt Felfoldi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
les: check required message types in cost table
上级
0de9f32a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
30 addition
and
4 deletion
+30
-4
les/handler.go
les/handler.go
+5
-1
les/peer.go
les/peer.go
+25
-3
未找到文件。
les/handler.go
浏览文件 @
c8d8126b
...
...
@@ -324,7 +324,11 @@ func (pm *ProtocolManager) handle(p *peer) error {
}
}
var
reqList
=
[]
uint64
{
GetBlockHeadersMsg
,
GetBlockBodiesMsg
,
GetCodeMsg
,
GetReceiptsMsg
,
GetProofsV1Msg
,
SendTxMsg
,
SendTxV2Msg
,
GetTxStatusMsg
,
GetHeaderProofsMsg
,
GetProofsV2Msg
,
GetHelperTrieProofsMsg
}
var
(
reqList
=
[]
uint64
{
GetBlockHeadersMsg
,
GetBlockBodiesMsg
,
GetCodeMsg
,
GetReceiptsMsg
,
GetProofsV1Msg
,
SendTxMsg
,
SendTxV2Msg
,
GetTxStatusMsg
,
GetHeaderProofsMsg
,
GetProofsV2Msg
,
GetHelperTrieProofsMsg
}
reqListV1
=
[]
uint64
{
GetBlockHeadersMsg
,
GetBlockBodiesMsg
,
GetCodeMsg
,
GetReceiptsMsg
,
GetProofsV1Msg
,
SendTxMsg
,
GetHeaderProofsMsg
}
reqListV2
=
[]
uint64
{
GetBlockHeadersMsg
,
GetBlockBodiesMsg
,
GetCodeMsg
,
GetReceiptsMsg
,
SendTxV2Msg
,
GetTxStatusMsg
,
GetProofsV2Msg
,
GetHelperTrieProofsMsg
}
)
// handleMsg is invoked whenever an inbound message is received from a remote
// peer. The remote connection is torn down upon returning any error.
...
...
les/peer.go
浏览文件 @
c8d8126b
...
...
@@ -168,7 +168,11 @@ func (p *peer) GetRequestCost(msgcode uint64, amount int) uint64 {
p
.
lock
.
RLock
()
defer
p
.
lock
.
RUnlock
()
cost
:=
p
.
fcCosts
[
msgcode
]
.
baseCost
+
p
.
fcCosts
[
msgcode
]
.
reqCost
*
uint64
(
amount
)
costs
:=
p
.
fcCosts
[
msgcode
]
if
costs
==
nil
{
return
0
}
cost
:=
costs
.
baseCost
+
costs
.
reqCost
*
uint64
(
amount
)
if
cost
>
p
.
fcServerParams
.
BufLimit
{
cost
=
p
.
fcServerParams
.
BufLimit
}
...
...
@@ -189,8 +193,12 @@ func (p *peer) GetTxRelayCost(amount, size int) uint64 {
panic
(
nil
)
}
cost
:=
p
.
fcCosts
[
msgcode
]
.
baseCost
+
p
.
fcCosts
[
msgcode
]
.
reqCost
*
uint64
(
amount
)
sizeCost
:=
p
.
fcCosts
[
msgcode
]
.
baseCost
+
p
.
fcCosts
[
msgcode
]
.
reqCost
*
uint64
(
size
)
/
txSizeCostLimit
costs
:=
p
.
fcCosts
[
msgcode
]
if
costs
==
nil
{
return
0
}
cost
:=
costs
.
baseCost
+
costs
.
reqCost
*
uint64
(
amount
)
sizeCost
:=
costs
.
baseCost
+
costs
.
reqCost
*
uint64
(
size
)
/
txSizeCostLimit
if
sizeCost
>
cost
{
cost
=
sizeCost
}
...
...
@@ -516,6 +524,20 @@ func (p *peer) Handshake(td *big.Int, head common.Hash, headNum uint64, genesis
p
.
fcServerParams
=
params
p
.
fcServer
=
flowcontrol
.
NewServerNode
(
params
)
p
.
fcCosts
=
MRC
.
decode
()
var
checkList
[]
uint64
switch
p
.
version
{
case
lpv1
:
checkList
=
reqListV1
case
lpv2
:
checkList
=
reqListV2
default
:
panic
(
nil
)
}
for
_
,
msgCode
:=
range
checkList
{
if
p
.
fcCosts
[
msgCode
]
==
nil
{
return
errResp
(
ErrUselessPeer
,
"peer does not support message %d"
,
msgCode
)
}
}
}
p
.
headInfo
=
&
announceData
{
Td
:
rTd
,
Hash
:
rHash
,
Number
:
rNum
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录