Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
whqwjb
go-ethereum
提交
33efb338
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 搜索 >>
提交
33efb338
编写于
8月 01, 2015
作者:
J
Jeffrey Wilcke
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1461 from bas-vk/eth_resend
Old transaction after resend was not removed from pool
上级
a8b39b5c
7e31df39
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
23 addition
and
10 deletion
+23
-10
core/transaction_pool.go
core/transaction_pool.go
+3
-2
core/transaction_pool_test.go
core/transaction_pool_test.go
+1
-1
rpc/api/eth.go
rpc/api/eth.go
+11
-7
rpc/api/eth_args.go
rpc/api/eth_args.go
+8
-0
未找到文件。
core/transaction_pool.go
浏览文件 @
33efb338
...
@@ -356,11 +356,12 @@ func (self *TxPool) RemoveTransactions(txs types.Transactions) {
...
@@ -356,11 +356,12 @@ func (self *TxPool) RemoveTransactions(txs types.Transactions) {
self
.
mu
.
Lock
()
self
.
mu
.
Lock
()
defer
self
.
mu
.
Unlock
()
defer
self
.
mu
.
Unlock
()
for
_
,
tx
:=
range
txs
{
for
_
,
tx
:=
range
txs
{
self
.
r
emoveTx
(
tx
.
Hash
())
self
.
R
emoveTx
(
tx
.
Hash
())
}
}
}
}
func
(
pool
*
TxPool
)
removeTx
(
hash
common
.
Hash
)
{
// RemoveTx removes the transaction with the given hash from the pool.
func
(
pool
*
TxPool
)
RemoveTx
(
hash
common
.
Hash
)
{
// delete from pending pool
// delete from pending pool
delete
(
pool
.
pending
,
hash
)
delete
(
pool
.
pending
,
hash
)
// delete from queue
// delete from queue
...
...
core/transaction_pool_test.go
浏览文件 @
33efb338
...
@@ -130,7 +130,7 @@ func TestRemoveTx(t *testing.T) {
...
@@ -130,7 +130,7 @@ func TestRemoveTx(t *testing.T) {
t
.
Error
(
"expected txs to be 1, got"
,
len
(
pool
.
pending
))
t
.
Error
(
"expected txs to be 1, got"
,
len
(
pool
.
pending
))
}
}
pool
.
r
emoveTx
(
tx
.
Hash
())
pool
.
R
emoveTx
(
tx
.
Hash
())
if
len
(
pool
.
queue
)
>
0
{
if
len
(
pool
.
queue
)
>
0
{
t
.
Error
(
"expected queue to be 0, got"
,
len
(
pool
.
queue
))
t
.
Error
(
"expected queue to be 0, got"
,
len
(
pool
.
queue
))
...
...
rpc/api/eth.go
浏览文件 @
33efb338
...
@@ -21,8 +21,9 @@ import (
...
@@ -21,8 +21,9 @@ import (
"encoding/json"
"encoding/json"
"math/big"
"math/big"
"fmt"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/eth"
"github.com/ethereum/go-ethereum/eth"
"github.com/ethereum/go-ethereum/rpc/codec"
"github.com/ethereum/go-ethereum/rpc/codec"
"github.com/ethereum/go-ethereum/rpc/shared"
"github.com/ethereum/go-ethereum/rpc/shared"
...
@@ -578,14 +579,17 @@ func (self *ethApi) Resend(req *shared.Request) (interface{}, error) {
...
@@ -578,14 +579,17 @@ func (self *ethApi) Resend(req *shared.Request) (interface{}, error) {
return
nil
,
shared
.
NewDecodeParamError
(
err
.
Error
())
return
nil
,
shared
.
NewDecodeParamError
(
err
.
Error
())
}
}
ret
,
err
:=
self
.
xeth
.
Transact
(
args
.
Tx
.
From
,
args
.
Tx
.
To
,
args
.
Tx
.
Nonce
,
args
.
Tx
.
Value
,
args
.
GasLimit
,
args
.
GasPrice
,
args
.
Tx
.
Data
)
from
:=
common
.
HexToAddress
(
args
.
Tx
.
From
)
if
err
!=
nil
{
return
nil
,
err
}
self
.
ethereum
.
TxPool
()
.
RemoveTransactions
(
types
.
Transactions
{
args
.
Tx
.
tx
})
pending
:=
self
.
ethereum
.
TxPool
()
.
GetTransactions
()
for
_
,
p
:=
range
pending
{
if
pFrom
,
err
:=
p
.
From
();
err
==
nil
&&
pFrom
==
from
&&
p
.
SigHash
()
==
args
.
Tx
.
tx
.
SigHash
()
{
self
.
ethereum
.
TxPool
()
.
RemoveTx
(
common
.
HexToHash
(
args
.
Tx
.
Hash
))
return
self
.
xeth
.
Transact
(
args
.
Tx
.
From
,
args
.
Tx
.
To
,
args
.
Tx
.
Nonce
,
args
.
Tx
.
Value
,
args
.
GasLimit
,
args
.
GasPrice
,
args
.
Tx
.
Data
)
}
}
return
ret
,
nil
return
nil
,
fmt
.
Errorf
(
"Transaction %s not found"
,
args
.
Tx
.
Hash
)
}
}
func
(
self
*
ethApi
)
PendingTransactions
(
req
*
shared
.
Request
)
(
interface
{},
error
)
{
func
(
self
*
ethApi
)
PendingTransactions
(
req
*
shared
.
Request
)
(
interface
{},
error
)
{
...
...
rpc/api/eth_args.go
浏览文件 @
33efb338
...
@@ -884,6 +884,7 @@ type tx struct {
...
@@ -884,6 +884,7 @@ type tx struct {
Data
string
Data
string
GasLimit
string
GasLimit
string
GasPrice
string
GasPrice
string
Hash
string
}
}
func
newTx
(
t
*
types
.
Transaction
)
*
tx
{
func
newTx
(
t
*
types
.
Transaction
)
*
tx
{
...
@@ -902,6 +903,7 @@ func newTx(t *types.Transaction) *tx {
...
@@ -902,6 +903,7 @@ func newTx(t *types.Transaction) *tx {
Data
:
"0x"
+
common
.
Bytes2Hex
(
t
.
Data
()),
Data
:
"0x"
+
common
.
Bytes2Hex
(
t
.
Data
()),
GasLimit
:
t
.
Gas
()
.
String
(),
GasLimit
:
t
.
Gas
()
.
String
(),
GasPrice
:
t
.
GasPrice
()
.
String
(),
GasPrice
:
t
.
GasPrice
()
.
String
(),
Hash
:
t
.
Hash
()
.
Hex
(),
}
}
}
}
...
@@ -927,6 +929,12 @@ func (tx *tx) UnmarshalJSON(b []byte) (err error) {
...
@@ -927,6 +929,12 @@ func (tx *tx) UnmarshalJSON(b []byte) (err error) {
contractCreation
=
true
contractCreation
=
true
)
)
if
val
,
found
:=
fields
[
"Hash"
];
found
{
if
hashVal
,
ok
:=
val
.
(
string
);
ok
{
tx
.
Hash
=
hashVal
}
}
if
val
,
found
:=
fields
[
"To"
];
found
{
if
val
,
found
:=
fields
[
"To"
];
found
{
if
strVal
,
ok
:=
val
.
(
string
);
ok
&&
len
(
strVal
)
>
0
{
if
strVal
,
ok
:=
val
.
(
string
);
ok
&&
len
(
strVal
)
>
0
{
tx
.
To
=
strVal
tx
.
To
=
strVal
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录