system listener for both TCP and UDP

This commit is contained in:
Darien Raymond
2018-09-15 21:35:32 +02:00
parent 47337d6496
commit 20251bf499
11 changed files with 80 additions and 42 deletions

View File

@@ -18,7 +18,7 @@ type Server struct {
ShouldClose bool
SendFirst []byte
Listen net.Address
listener *net.TCPListener
listener net.Listener
}
func (server *Server) Start() (net.Destination, error) {
@@ -30,17 +30,19 @@ func (server *Server) StartContext(ctx context.Context) (net.Destination, error)
if listenerAddr == nil {
listenerAddr = net.LocalHostIP
}
listener, err := internet.ListenSystemTCP(ctx, &net.TCPAddr{
listener, err := internet.ListenSystem(ctx, &net.TCPAddr{
IP: listenerAddr.IP(),
Port: int(server.Port),
})
if err != nil {
return net.Destination{}, err
}
server.Port = net.Port(listener.Addr().(*net.TCPAddr).Port)
server.listener = listener
go server.acceptConnections(listener)
localAddr := listener.Addr().(*net.TCPAddr)
server.Port = net.Port(localAddr.Port)
server.listener = listener
go server.acceptConnections(listener.(*net.TCPListener))
return net.TCPDestination(net.IPAddress(localAddr.IP), net.Port(localAddr.Port)), nil
}