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
b7e1b686
Commit
b7e1b686
authored
Apr 13, 2015
by
obscuren
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop
parents
07eebc38
2ea98d9b
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
14 additions
and
41 deletions
+14
-41
node.go
p2p/discover/node.go
+0
-15
table.go
p2p/discover/table.go
+0
-1
udp.go
p2p/discover/udp.go
+3
-2
handshake.go
p2p/handshake.go
+1
-1
peer.go
p2p/peer.go
+8
-22
server.go
p2p/server.go
+2
-0
No files found.
p2p/discover/node.go
View file @
b7e1b686
...
...
@@ -14,8 +14,6 @@ import (
"strconv"
"strings"
"sync"
"sync/atomic"
"time"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/crypto/secp256k1"
...
...
@@ -31,9 +29,6 @@ type Node struct {
DiscPort
int
// UDP listening port for discovery protocol
TCPPort
int
// TCP listening port for RLPx
// this must be set/read using atomic load and store.
activeStamp
int64
}
func
newNode
(
id
NodeID
,
addr
*
net
.
UDPAddr
)
*
Node
{
...
...
@@ -50,16 +45,6 @@ func (n *Node) isValid() bool {
return
!
n
.
IP
.
IsMulticast
()
&&
!
n
.
IP
.
IsUnspecified
()
&&
n
.
TCPPort
!=
0
&&
n
.
DiscPort
!=
0
}
func
(
n
*
Node
)
bumpActive
()
{
stamp
:=
time
.
Now
()
.
Unix
()
atomic
.
StoreInt64
(
&
n
.
activeStamp
,
stamp
)
}
func
(
n
*
Node
)
active
()
time
.
Time
{
stamp
:=
atomic
.
LoadInt64
(
&
n
.
activeStamp
)
return
time
.
Unix
(
stamp
,
0
)
}
func
(
n
*
Node
)
addr
()
*
net
.
UDPAddr
{
return
&
net
.
UDPAddr
{
IP
:
n
.
IP
,
Port
:
n
.
DiscPort
}
}
...
...
p2p/discover/table.go
View file @
b7e1b686
...
...
@@ -326,7 +326,6 @@ outer:
func
(
b
*
bucket
)
bump
(
n
*
Node
)
bool
{
for
i
:=
range
b
.
entries
{
if
b
.
entries
[
i
]
.
ID
==
n
.
ID
{
n
.
bumpActive
()
// move it to the front
copy
(
b
.
entries
[
1
:
],
b
.
entries
[
:
i
])
b
.
entries
[
0
]
=
n
...
...
p2p/discover/udp.go
View file @
b7e1b686
...
...
@@ -267,11 +267,12 @@ func (t *udp) loop() {
defer
timeout
.
Stop
()
rearmTimeout
:=
func
()
{
if
len
(
pending
)
==
0
||
nextDeadline
==
pending
[
0
]
.
deadline
{
now
:=
time
.
Now
()
if
len
(
pending
)
==
0
||
now
.
Before
(
nextDeadline
)
{
return
}
nextDeadline
=
pending
[
0
]
.
deadline
timeout
.
Reset
(
nextDeadline
.
Sub
(
time
.
Now
()
))
timeout
.
Reset
(
nextDeadline
.
Sub
(
now
))
}
for
{
...
...
p2p/handshake.go
View file @
b7e1b686
...
...
@@ -115,7 +115,7 @@ func setupOutboundConn(fd net.Conn, prv *ecdsa.PrivateKey, our *protoHandshake,
// returning the handshake read error. If the remote side
// disconnects us early with a valid reason, we should return it
// as the error so it can be tracked elsewhere.
werr
:=
make
(
chan
error
)
werr
:=
make
(
chan
error
,
1
)
go
func
()
{
werr
<-
Send
(
rw
,
handshakeMsg
,
our
)
}()
rhs
,
err
:=
readProtocolHandshake
(
rw
,
secrets
.
RemoteID
,
our
)
if
err
!=
nil
{
...
...
p2p/peer.go
View file @
b7e1b686
...
...
@@ -4,7 +4,6 @@ import (
"errors"
"fmt"
"io"
"io/ioutil"
"net"
"sort"
"sync"
...
...
@@ -20,8 +19,7 @@ const (
baseProtocolLength
=
uint64
(
16
)
baseProtocolMaxMsgSize
=
10
*
1024
*
1024
pingInterval
=
15
*
time
.
Second
disconnectGracePeriod
=
2
*
time
.
Second
pingInterval
=
15
*
time
.
Second
)
const
(
...
...
@@ -129,39 +127,27 @@ func (p *Peer) run() DiscReason {
case
err
:=
<-
readErr
:
if
r
,
ok
:=
err
.
(
DiscReason
);
ok
{
reason
=
r
break
}
else
{
// Note: We rely on protocols to abort if there is a write
// error. It might be more robust to handle them here as well.
p
.
DebugDetailf
(
"Read error: %v
\n
"
,
err
)
reason
=
DiscNetworkError
}
// Note: We rely on protocols to abort if there is a write
// error. It might be more robust to handle them here as well.
p
.
DebugDetailf
(
"Read error: %v
\n
"
,
err
)
p
.
conn
.
Close
()
reason
=
DiscNetworkError
case
err
:=
<-
p
.
protoErr
:
reason
=
discReasonForError
(
err
)
case
reason
=
<-
p
.
disc
:
}
close
(
p
.
closed
)
p
.
politeDisconnect
(
reason
)
p
.
wg
.
Wait
()
if
reason
!=
DiscNetworkError
{
p
.
politeDisconnect
(
reason
)
}
p
.
Debugf
(
"Disconnected: %v
\n
"
,
reason
)
return
reason
}
func
(
p
*
Peer
)
politeDisconnect
(
reason
DiscReason
)
{
done
:=
make
(
chan
struct
{})
go
func
()
{
if
reason
!=
DiscNetworkError
{
SendItems
(
p
.
rw
,
discMsg
,
uint
(
reason
))
// Wait for the other side to close the connection.
// Discard any data that they send until then.
io
.
Copy
(
ioutil
.
Discard
,
p
.
conn
)
close
(
done
)
}()
select
{
case
<-
done
:
case
<-
time
.
After
(
disconnectGracePeriod
)
:
}
p
.
conn
.
Close
()
}
...
...
p2p/server.go
View file @
b7e1b686
...
...
@@ -260,9 +260,11 @@ func (srv *Server) Stop() {
// No new peers can be added at this point because dialLoop and
// listenLoop are down. It is safe to call peerWG.Wait because
// peerWG.Add is not called outside of those loops.
srv
.
lock
.
Lock
()
for
_
,
peer
:=
range
srv
.
peers
{
peer
.
Disconnect
(
DiscQuitting
)
}
srv
.
lock
.
Unlock
()
srv
.
peerWG
.
Wait
()
}
...
...
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