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
33efb338
Commit
33efb338
authored
Aug 01, 2015
by
Jeffrey Wilcke
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1461 from bas-vk/eth_resend
Old transaction after resend was not removed from pool
parents
a8b39b5c
7e31df39
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
23 additions
and
10 deletions
+23
-10
transaction_pool.go
core/transaction_pool.go
+3
-2
transaction_pool_test.go
core/transaction_pool_test.go
+1
-1
eth.go
rpc/api/eth.go
+11
-7
eth_args.go
rpc/api/eth_args.go
+8
-0
No files found.
core/transaction_pool.go
View file @
33efb338
...
...
@@ -356,11 +356,12 @@ func (self *TxPool) RemoveTransactions(txs types.Transactions) {
self
.
mu
.
Lock
()
defer
self
.
mu
.
Unlock
()
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
(
pool
.
pending
,
hash
)
// delete from queue
...
...
core/transaction_pool_test.go
View file @
33efb338
...
...
@@ -130,7 +130,7 @@ func TestRemoveTx(t *testing.T) {
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
{
t
.
Error
(
"expected queue to be 0, got"
,
len
(
pool
.
queue
))
...
...
rpc/api/eth.go
View file @
33efb338
...
...
@@ -21,8 +21,9 @@ import (
"encoding/json"
"math/big"
"fmt"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/eth"
"github.com/ethereum/go-ethereum/rpc/codec"
"github.com/ethereum/go-ethereum/rpc/shared"
...
...
@@ -578,14 +579,17 @@ func (self *ethApi) Resend(req *shared.Request) (interface{}, 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
)
if
err
!=
nil
{
return
nil
,
err
}
from
:=
common
.
HexToAddress
(
args
.
Tx
.
From
)
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
)
{
...
...
rpc/api/eth_args.go
View file @
33efb338
...
...
@@ -884,6 +884,7 @@ type tx struct {
Data
string
GasLimit
string
GasPrice
string
Hash
string
}
func
newTx
(
t
*
types
.
Transaction
)
*
tx
{
...
...
@@ -902,6 +903,7 @@ func newTx(t *types.Transaction) *tx {
Data
:
"0x"
+
common
.
Bytes2Hex
(
t
.
Data
()),
GasLimit
:
t
.
Gas
()
.
String
(),
GasPrice
:
t
.
GasPrice
()
.
String
(),
Hash
:
t
.
Hash
()
.
Hex
(),
}
}
...
...
@@ -927,6 +929,12 @@ func (tx *tx) UnmarshalJSON(b []byte) (err error) {
contractCreation
=
true
)
if
val
,
found
:=
fields
[
"Hash"
];
found
{
if
hashVal
,
ok
:=
val
.
(
string
);
ok
{
tx
.
Hash
=
hashVal
}
}
if
val
,
found
:=
fields
[
"To"
];
found
{
if
strVal
,
ok
:=
val
.
(
string
);
ok
&&
len
(
strVal
)
>
0
{
tx
.
To
=
strVal
...
...
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