Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
C
Coredns
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Railgun
Coredns
Commits
fb971fff
Commit
fb971fff
authored
Oct 01, 2018
by
Miek Gieben
Committed by
corbot[bot]
Oct 01, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Core: Support REUSE_PORT (#2149)
Automatically submitted.
parent
e1978302
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
47 additions
and
2 deletions
+47
-2
core/dnsserver/listen_go111.go
core/dnsserver/listen_go111.go
+34
-0
core/dnsserver/listen_go_not111.go
core/dnsserver/listen_go_not111.go
+11
-0
core/dnsserver/server.go
core/dnsserver/server.go
+2
-2
No files found.
core/dnsserver/listen_go111.go
0 → 100644
View file @
fb971fff
// +build go1.11
// +build aix darwin dragonfly freebsd linux netbsd openbsd
package
dnsserver
import
(
"context"
"net"
"syscall"
"golang.org/x/sys/unix"
)
const
supportsReusePort
=
true
func
reuseportControl
(
network
,
address
string
,
c
syscall
.
RawConn
)
(
opErr
error
)
{
err
:=
c
.
Control
(
func
(
fd
uintptr
)
{
opErr
=
unix
.
SetsockoptInt
(
int
(
fd
),
unix
.
SOL_SOCKET
,
unix
.
SO_REUSEPORT
,
1
)
})
if
err
!=
nil
{
return
err
}
return
opErr
}
func
listen
(
network
,
addr
string
)
(
net
.
Listener
,
error
)
{
lc
:=
net
.
ListenConfig
{
Control
:
reuseportControl
}
return
lc
.
Listen
(
context
.
Background
(),
network
,
addr
)
}
func
listenPacket
(
network
,
addr
string
)
(
net
.
PacketConn
,
error
)
{
lc
:=
net
.
ListenConfig
{
Control
:
reuseportControl
}
return
lc
.
ListenPacket
(
context
.
Background
(),
network
,
addr
)
}
core/dnsserver/listen_go_not111.go
0 → 100644
View file @
fb971fff
// +build !go1.11 !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd
package
dnsserver
import
"net"
func
listen
(
network
,
addr
string
)
(
net
.
Listener
,
error
)
{
return
net
.
Listen
(
network
,
addr
)
}
func
listenPacket
(
network
,
addr
string
)
(
net
.
PacketConn
,
error
)
{
return
net
.
ListenPacket
(
network
,
addr
)
}
core/dnsserver/server.go
View file @
fb971fff
...
...
@@ -135,7 +135,7 @@ func (s *Server) ServePacket(p net.PacketConn) error {
// Listen implements caddy.TCPServer interface.
func
(
s
*
Server
)
Listen
()
(
net
.
Listener
,
error
)
{
l
,
err
:=
net
.
L
isten
(
"tcp"
,
s
.
Addr
[
len
(
transport
.
DNS
+
"://"
)
:
])
l
,
err
:=
l
isten
(
"tcp"
,
s
.
Addr
[
len
(
transport
.
DNS
+
"://"
)
:
])
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -144,7 +144,7 @@ func (s *Server) Listen() (net.Listener, error) {
// ListenPacket implements caddy.UDPServer interface.
func
(
s
*
Server
)
ListenPacket
()
(
net
.
PacketConn
,
error
)
{
p
,
err
:=
net
.
L
istenPacket
(
"udp"
,
s
.
Addr
[
len
(
transport
.
DNS
+
"://"
)
:
])
p
,
err
:=
l
istenPacket
(
"udp"
,
s
.
Addr
[
len
(
transport
.
DNS
+
"://"
)
:
])
if
err
!=
nil
{
return
nil
,
err
}
...
...
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