use fixed buffer size

This commit is contained in:
ginuerzh
2025-02-18 21:04:04 +08:00
parent e0915affda
commit 69a0aa8853
3 changed files with 6 additions and 14 deletions
+2 -4
View File
@@ -121,11 +121,9 @@ func (h *routerHandler) handleAssociate(ctx context.Context, conn net.Conn, netw
log.Debugf("%s/%s: router=%s, connector=%s, weight=%d established", host, network, routerID, connectorID, connectorID.Weight()) log.Debugf("%s/%s: router=%s, connector=%s, weight=%d established", host, network, routerID, connectorID, connectorID.Weight())
b := bufpool.Get(h.md.bufferSize) var b [MaxMessageSize]byte
defer bufpool.Put(b)
for { for {
n, err := conn.Read(b) n, err := conn.Read(b[:])
if err != nil { if err != nil {
if err == io.EOF { if err == io.EOF {
return nil return nil
+2 -4
View File
@@ -3,18 +3,16 @@ package router
import ( import (
"bytes" "bytes"
"github.com/go-gost/core/common/bufpool"
"github.com/go-gost/core/logger" "github.com/go-gost/core/logger"
"github.com/go-gost/relay" "github.com/go-gost/relay"
) )
func (h *routerHandler) handleEntrypoint(log logger.Logger) error { func (h *routerHandler) handleEntrypoint(log logger.Logger) error {
buf := bufpool.Get(h.md.bufferSize) var buf [MaxMessageSize]byte
defer bufpool.Put(buf)
for { for {
err := func() error { err := func() error {
n, addr, err := h.epConn.ReadFrom(buf) n, addr, err := h.epConn.ReadFrom(buf[:])
if err != nil { if err != nil {
return err return err
} }
+2 -6
View File
@@ -1,6 +1,7 @@
package router package router
import ( import (
"math"
"time" "time"
"github.com/go-gost/core/ingress" "github.com/go-gost/core/ingress"
@@ -12,14 +13,13 @@ import (
) )
const ( const (
MaxMessageSize = math.MaxUint16
defaultTTL = 15 * time.Second defaultTTL = 15 * time.Second
defaultBufferSize = 4096
defaultCacheExpiration = time.Second defaultCacheExpiration = time.Second
) )
type metadata struct { type metadata struct {
readTimeout time.Duration readTimeout time.Duration
bufferSize int
entryPoint string entryPoint string
ingress ingress.Ingress ingress ingress.Ingress
@@ -40,10 +40,6 @@ type metadata struct {
func (h *routerHandler) parseMetadata(md mdata.Metadata) (err error) { func (h *routerHandler) parseMetadata(md mdata.Metadata) (err error) {
h.md.readTimeout = mdutil.GetDuration(md, "readTimeout") h.md.readTimeout = mdutil.GetDuration(md, "readTimeout")
h.md.bufferSize = mdutil.GetInt(md, "router.bufferSize", "bufferSize")
if h.md.bufferSize <= 0 {
h.md.bufferSize = defaultBufferSize
}
h.md.entryPoint = mdutil.GetString(md, "entrypoint") h.md.entryPoint = mdutil.GetString(md, "entrypoint")
h.md.ingress = registry.IngressRegistry().Get(mdutil.GetString(md, "ingress")) h.md.ingress = registry.IngressRegistry().Get(mdutil.GetString(md, "ingress"))