diff --git a/connector/relay/bind.go b/connector/relay/bind.go index a8df615..42e6c93 100644 --- a/connector/relay/bind.go +++ b/connector/relay/bind.go @@ -6,7 +6,7 @@ import ( "net" "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/logger" "github.com/go-gost/relay" @@ -67,11 +67,15 @@ func (c *relayConnector) bindUDP(ctx context.Context, conn net.Conn, network, ad ln := udp.NewListener( relay_util.UDPTunClientPacketConn(conn), - laddr, - opts.Backlog, - opts.UDPDataQueueSize, opts.UDPDataBufferSize, - opts.UDPConnTTL, - log) + &udp.ListenConfig{ + Addr: laddr, + Backlog: opts.Backlog, + ReadQueueSize: opts.UDPDataQueueSize, + ReadBufferSize: opts.UDPDataBufferSize, + TTL: opts.UDPConnTTL, + KeepAlive: true, + Logger: log, + }) return ln, nil } diff --git a/handler/dns/handler.go b/handler/dns/handler.go index 8d2be54..d0ecd3b 100644 --- a/handler/dns/handler.go +++ b/handler/dns/handler.go @@ -114,7 +114,7 @@ func (h *dnsHandler) Handle(ctx context.Context, conn net.Conn, opts ...handler. }).Infof("%s >< %s", conn.RemoteAddr(), conn.LocalAddr()) }() - b := bufpool.Get(4096) + b := bufpool.Get(defaultBufferSize) defer bufpool.Put(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) if mr != nil { - b := bufpool.Get(4096) + b := bufpool.Get(defaultBufferSize) 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()) mr.Id = mq.Id - b := bufpool.Get(4096) + b := bufpool.Get(defaultBufferSize) 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) query, err := mq.PackBuffer(*b) diff --git a/handler/dns/metadata.go b/handler/dns/metadata.go index bd641db..e69b105 100644 --- a/handler/dns/metadata.go +++ b/handler/dns/metadata.go @@ -7,6 +7,10 @@ import ( mdata "github.com/go-gost/core/metadata" ) +const ( + defaultBufferSize = 1024 +) + type metadata struct { readTimeout time.Duration ttl time.Duration diff --git a/listener/ftcp/listener.go b/listener/ftcp/listener.go index 45a0c63..eab7b4f 100644 --- a/listener/ftcp/listener.go +++ b/listener/ftcp/listener.go @@ -3,7 +3,7 @@ package ftcp import ( "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/logger" md "github.com/go-gost/core/metadata" @@ -39,11 +39,6 @@ func (l *ftcpListener) Init(md md.Metadata) (err error) { return } - laddr, err := net.ResolveTCPAddr("tcp", l.options.Addr) - if err != nil { - return - } - var conn net.PacketConn conn, err = tcpraw.Listen("tcp", l.options.Addr) if err != nil { @@ -53,11 +48,14 @@ func (l *ftcpListener) Init(md md.Metadata) (err error) { l.ln = udp.NewListener( conn, - laddr, - l.md.backlog, - l.md.readQueueSize, l.md.readBufferSize, - l.md.ttl, - l.logger) + &udp.ListenConfig{ + Backlog: l.md.backlog, + ReadQueueSize: l.md.readQueueSize, + ReadBufferSize: l.md.readBufferSize, + TTL: l.md.ttl, + KeepAlive: true, + Logger: l.logger, + }) return }