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
e67500aa
Commit
e67500aa
authored
Nov 29, 2016
by
Zsolt Felfoldi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
les: fixed light fetcher request ID matching
parent
a6d3bf6f
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
11 additions
and
5 deletions
+11
-5
fetcher.go
les/fetcher.go
+10
-4
handler.go
les/handler.go
+1
-1
No files found.
les/fetcher.go
View file @
e67500aa
...
...
@@ -53,6 +53,7 @@ type fetchRequest struct {
type
fetchResponse
struct
{
reqID
uint64
headers
[]
*
types
.
Header
peer
*
peer
}
func
newLightFetcher
(
pm
*
ProtocolManager
)
*
lightFetcher
{
...
...
@@ -148,8 +149,8 @@ func (f *lightFetcher) nextRequest() (*peer, *announceData) {
return
bestPeer
,
res
}
func
(
f
*
lightFetcher
)
deliverHeaders
(
reqID
uint64
,
headers
[]
*
types
.
Header
)
{
f
.
deliverChn
<-
fetchResponse
{
reqID
:
reqID
,
headers
:
headers
}
func
(
f
*
lightFetcher
)
deliverHeaders
(
peer
*
peer
,
reqID
uint64
,
headers
[]
*
types
.
Header
)
{
f
.
deliverChn
<-
fetchResponse
{
reqID
:
reqID
,
headers
:
headers
,
peer
:
peer
}
}
func
(
f
*
lightFetcher
)
requestedID
(
reqID
uint64
)
bool
{
...
...
@@ -280,11 +281,16 @@ func (f *lightFetcher) syncLoop() {
//fmt.Println("<-f.deliverChn", f.syncing)
f
.
reqMu
.
Lock
()
req
,
ok
:=
f
.
requested
[
resp
.
reqID
]
delete
(
f
.
requested
,
resp
.
reqID
)
if
ok
&&
req
.
peer
!=
resp
.
peer
{
ok
=
false
}
if
ok
{
delete
(
f
.
requested
,
resp
.
reqID
)
}
f
.
reqMu
.
Unlock
()
if
!
ok
||
!
(
f
.
syncing
||
f
.
processResponse
(
req
,
resp
))
{
//fmt.Println("processResponse fail")
f
.
pm
.
removePeer
(
re
q
.
peer
.
id
)
f
.
pm
.
removePeer
(
re
sp
.
peer
.
id
)
}
case
<-
f
.
syncDone
:
//fmt.Println("<-f.syncDone", f.syncing)
...
...
les/handler.go
View file @
e67500aa
...
...
@@ -559,7 +559,7 @@ func (pm *ProtocolManager) handleMsg(p *peer) error {
}
p
.
fcServer
.
GotReply
(
resp
.
ReqID
,
resp
.
BV
)
if
pm
.
fetcher
.
requestedID
(
resp
.
ReqID
)
{
pm
.
fetcher
.
deliverHeaders
(
resp
.
ReqID
,
resp
.
Headers
)
pm
.
fetcher
.
deliverHeaders
(
p
,
resp
.
ReqID
,
resp
.
Headers
)
}
else
{
err
:=
pm
.
downloader
.
DeliverHeaders
(
p
.
id
,
resp
.
Headers
)
if
err
!=
nil
{
...
...
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