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
3953bf00
Commit
3953bf00
authored
Apr 30, 2015
by
Péter Szilágyi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
p2p: limit the outbound dialing too
parent
97c37356
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
11 additions
and
1 deletion
+11
-1
server.go
p2p/server.go
+11
-1
No files found.
p2p/server.go
View file @
3953bf00
...
@@ -27,6 +27,9 @@ const (
...
@@ -27,6 +27,9 @@ const (
// 'added as peer'.
// 'added as peer'.
maxAcceptConns
=
50
maxAcceptConns
=
50
// Maximum number of concurrently dialing outbound connections.
maxDialingConns
=
50
// total timeout for encryption handshake and protocol
// total timeout for encryption handshake and protocol
// handshake in both directions.
// handshake in both directions.
handshakeTimeout
=
5
*
time
.
Second
handshakeTimeout
=
5
*
time
.
Second
...
@@ -401,7 +404,11 @@ func (srv *Server) dialLoop() {
...
@@ -401,7 +404,11 @@ func (srv *Server) dialLoop() {
defer
srv
.
loopWG
.
Done
()
defer
srv
.
loopWG
.
Done
()
defer
refresh
.
Stop
()
defer
refresh
.
Stop
()
// TODO: maybe limit number of active dials
// Limit the number of concurrent dials
slots
:=
make
(
chan
struct
{},
maxDialingConns
)
for
i
:=
0
;
i
<
maxDialingConns
;
i
++
{
slots
<-
struct
{}{}
}
dial
:=
func
(
dest
*
discover
.
Node
)
{
dial
:=
func
(
dest
*
discover
.
Node
)
{
// Don't dial nodes that would fail the checks in addPeer.
// Don't dial nodes that would fail the checks in addPeer.
// This is important because the connection handshake is a lot
// This is important because the connection handshake is a lot
...
@@ -413,6 +420,9 @@ func (srv *Server) dialLoop() {
...
@@ -413,6 +420,9 @@ func (srv *Server) dialLoop() {
if
!
ok
||
dialing
[
dest
.
ID
]
{
if
!
ok
||
dialing
[
dest
.
ID
]
{
return
return
}
}
// Request a dial slot to prevent CPU exhaustion
<-
slots
defer
func
()
{
slots
<-
struct
{}{}
}()
dialing
[
dest
.
ID
]
=
true
dialing
[
dest
.
ID
]
=
true
srv
.
peerWG
.
Add
(
1
)
srv
.
peerWG
.
Add
(
1
)
...
...
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