use fixed buffer size
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"))
|
||||||
|
|||||||
Reference in New Issue
Block a user