Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
p2p
go-reuseport
Commits
95e03a33
Commit
95e03a33
authored
Jan 19, 2015
by
Juan Batiz-Benet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avoid returning nil RemoteAddr -- horrible hack
parent
ce9cd56d
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
18 additions
and
1 deletion
+18
-1
interface.go
interface.go
+18
-1
No files found.
interface.go
View file @
95e03a33
...
...
@@ -20,6 +20,7 @@ package reuseport
import
(
"errors"
"net"
"time"
)
// ErrUnsuportedProtocol signals that the protocol is not currently
...
...
@@ -57,7 +58,23 @@ func Dial(network, laddr, raddr string) (net.Conn, error) {
d
.
D
.
LocalAddr
=
netladdr
}
return
dial
(
d
.
D
,
network
,
raddr
)
// there's a rare case where dial returns successfully but for some reason the
// RemoteAddr is not yet set. We wait here a while until it is, and if too long
// passes, we fail.
c
,
err
:=
dial
(
d
.
D
,
network
,
raddr
)
if
err
!=
nil
{
return
nil
,
err
}
for
start
:=
time
.
Now
();
c
.
RemoteAddr
()
==
nil
;
{
if
time
.
Now
()
.
Sub
(
start
)
>
time
.
Second
{
c
.
Close
()
return
nil
,
ErrReuseFailed
}
<-
time
.
After
(
20
*
time
.
Microsecond
)
}
return
c
,
nil
}
// Dialer is used to specify the Dial options, much like net.Dialer.
...
...
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