add buffer size option for udp connection
This commit is contained in:
@@ -121,9 +121,11 @@ 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())
|
||||
|
||||
var b [MaxMessageSize]byte
|
||||
b := bufpool.Get(h.md.bufferSize)
|
||||
defer bufpool.Put(b)
|
||||
|
||||
for {
|
||||
n, err := conn.Read(b[:])
|
||||
n, err := conn.Read(b)
|
||||
if err != nil {
|
||||
if err == io.EOF {
|
||||
return nil
|
||||
|
||||
@@ -3,16 +3,18 @@ package router
|
||||
import (
|
||||
"bytes"
|
||||
|
||||
"github.com/go-gost/core/common/bufpool"
|
||||
"github.com/go-gost/core/logger"
|
||||
"github.com/go-gost/relay"
|
||||
)
|
||||
|
||||
func (h *routerHandler) handleEntrypoint(log logger.Logger) error {
|
||||
var buf [MaxMessageSize]byte
|
||||
buf := bufpool.Get(h.md.bufferSize)
|
||||
defer bufpool.Put(buf)
|
||||
|
||||
for {
|
||||
err := func() error {
|
||||
n, addr, err := h.epConn.ReadFrom(buf[:])
|
||||
n, addr, err := h.epConn.ReadFrom(buf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"math"
|
||||
"time"
|
||||
|
||||
"github.com/go-gost/core/ingress"
|
||||
@@ -13,13 +12,14 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
MaxMessageSize = math.MaxUint16
|
||||
defaultTTL = 15 * time.Second
|
||||
defaultBufferSize = 4096
|
||||
defaultCacheExpiration = time.Second
|
||||
)
|
||||
|
||||
type metadata struct {
|
||||
readTimeout time.Duration
|
||||
bufferSize int
|
||||
|
||||
entryPoint string
|
||||
ingress ingress.Ingress
|
||||
@@ -40,6 +40,10 @@ type metadata struct {
|
||||
|
||||
func (h *routerHandler) parseMetadata(md mdata.Metadata) (err error) {
|
||||
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.ingress = registry.IngressRegistry().Get(mdutil.GetString(md, "ingress"))
|
||||
|
||||
Reference in New Issue
Block a user