update udp listener

This commit is contained in:
ginuerzh
2022-04-03 22:24:47 +08:00
parent eef1b9176f
commit 1c69832f5a
4 changed files with 27 additions and 21 deletions

View File

@ -6,7 +6,7 @@ import (
"net" "net"
"strconv" "strconv"
"github.com/go-gost/core/common/util/udp" "github.com/go-gost/core/common/net/udp"
"github.com/go-gost/core/connector" "github.com/go-gost/core/connector"
"github.com/go-gost/core/logger" "github.com/go-gost/core/logger"
"github.com/go-gost/relay" "github.com/go-gost/relay"
@ -67,11 +67,15 @@ func (c *relayConnector) bindUDP(ctx context.Context, conn net.Conn, network, ad
ln := udp.NewListener( ln := udp.NewListener(
relay_util.UDPTunClientPacketConn(conn), relay_util.UDPTunClientPacketConn(conn),
laddr, &udp.ListenConfig{
opts.Backlog, Addr: laddr,
opts.UDPDataQueueSize, opts.UDPDataBufferSize, Backlog: opts.Backlog,
opts.UDPConnTTL, ReadQueueSize: opts.UDPDataQueueSize,
log) ReadBufferSize: opts.UDPDataBufferSize,
TTL: opts.UDPConnTTL,
KeepAlive: true,
Logger: log,
})
return ln, nil return ln, nil
} }

View File

@ -114,7 +114,7 @@ func (h *dnsHandler) Handle(ctx context.Context, conn net.Conn, opts ...handler.
}).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr()) }).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr())
}() }()
b := bufpool.Get(4096) b := bufpool.Get(defaultBufferSize)
defer bufpool.Put(b) defer bufpool.Put(b)
n, err := conn.Read(*b) n, err := conn.Read(*b)
@ -165,7 +165,7 @@ func (h *dnsHandler) exchange(ctx context.Context, msg []byte, log logger.Logger
mr = h.lookupHosts(&mq, log) mr = h.lookupHosts(&mq, log)
if mr != nil { if mr != nil {
b := bufpool.Get(4096) b := bufpool.Get(defaultBufferSize)
return mr.PackBuffer(*b) return mr.PackBuffer(*b)
} }
@ -177,7 +177,7 @@ func (h *dnsHandler) exchange(ctx context.Context, msg []byte, log logger.Logger
log.Debugf("exchange message %d (cached): %s", mq.Id, mq.Question[0].String()) log.Debugf("exchange message %d (cached): %s", mq.Id, mq.Question[0].String())
mr.Id = mq.Id mr.Id = mq.Id
b := bufpool.Get(4096) b := bufpool.Get(defaultBufferSize)
return mr.PackBuffer(*b) return mr.PackBuffer(*b)
} }
@ -188,7 +188,7 @@ func (h *dnsHandler) exchange(ctx context.Context, msg []byte, log logger.Logger
}() }()
} }
b := bufpool.Get(4096) b := bufpool.Get(defaultBufferSize)
defer bufpool.Put(b) defer bufpool.Put(b)
query, err := mq.PackBuffer(*b) query, err := mq.PackBuffer(*b)

View File

@ -7,6 +7,10 @@ import (
mdata "github.com/go-gost/core/metadata" mdata "github.com/go-gost/core/metadata"
) )
const (
defaultBufferSize = 1024
)
type metadata struct { type metadata struct {
readTimeout time.Duration readTimeout time.Duration
ttl time.Duration ttl time.Duration

View File

@ -3,7 +3,7 @@ package ftcp
import ( import (
"net" "net"
"github.com/go-gost/core/common/util/udp" "github.com/go-gost/core/common/net/udp"
"github.com/go-gost/core/listener" "github.com/go-gost/core/listener"
"github.com/go-gost/core/logger" "github.com/go-gost/core/logger"
md "github.com/go-gost/core/metadata" md "github.com/go-gost/core/metadata"
@ -39,11 +39,6 @@ func (l *ftcpListener) Init(md md.Metadata) (err error) {
return return
} }
laddr, err := net.ResolveTCPAddr("tcp", l.options.Addr)
if err != nil {
return
}
var conn net.PacketConn var conn net.PacketConn
conn, err = tcpraw.Listen("tcp", l.options.Addr) conn, err = tcpraw.Listen("tcp", l.options.Addr)
if err != nil { if err != nil {
@ -53,11 +48,14 @@ func (l *ftcpListener) Init(md md.Metadata) (err error) {
l.ln = udp.NewListener( l.ln = udp.NewListener(
conn, conn,
laddr, &udp.ListenConfig{
l.md.backlog, Backlog: l.md.backlog,
l.md.readQueueSize, l.md.readBufferSize, ReadQueueSize: l.md.readQueueSize,
l.md.ttl, ReadBufferSize: l.md.readBufferSize,
l.logger) TTL: l.md.ttl,
KeepAlive: true,
Logger: l.logger,
})
return return
} }