use fixed buffer size

This commit is contained in:
ginuerzh
2025-02-18 17:38:27 +08:00
parent d610e2dc01
commit e0915affda
14 changed files with 67 additions and 126 deletions
+5 -10
View File
@@ -11,17 +11,16 @@ import (
"time"
"github.com/go-gost/core/chain"
"github.com/go-gost/core/common/bufpool"
"github.com/go-gost/core/handler"
"github.com/go-gost/core/hop"
"github.com/go-gost/core/logger"
md "github.com/go-gost/core/metadata"
ctxvalue "github.com/go-gost/x/ctx"
"github.com/go-gost/x/internal/util/ss"
tap_util "github.com/go-gost/x/internal/util/tap"
"github.com/go-gost/x/registry"
"github.com/shadowsocks/go-shadowsocks2/core"
"github.com/shadowsocks/go-shadowsocks2/shadowaead"
ctxvalue "github.com/go-gost/x/ctx"
"github.com/songgao/water/waterutil"
)
@@ -187,12 +186,10 @@ func (h *tapHandler) transport(tap net.Conn, conn net.PacketConn, raddr net.Addr
errc := make(chan error, 1)
go func() {
var b [MaxMessageSize]byte
for {
err := func() error {
b := bufpool.Get(h.md.bufferSize)
defer bufpool.Put(b)
n, err := tap.Read(b)
n, err := tap.Read(b[:])
if err != nil {
select {
case h.exit <- struct{}{}:
@@ -249,12 +246,10 @@ func (h *tapHandler) transport(tap net.Conn, conn net.PacketConn, raddr net.Addr
}()
go func() {
var b [MaxMessageSize]byte
for {
err := func() error {
b := bufpool.Get(h.md.bufferSize)
defer bufpool.Put(b)
n, addr, err := conn.ReadFrom(b)
n, addr, err := conn.ReadFrom(b[:])
if err != nil &&
err != shadowaead.ErrShortPacket {
return err
+8 -8
View File
@@ -1,25 +1,25 @@
package tap
import (
"math"
mdata "github.com/go-gost/core/metadata"
mdutil "github.com/go-gost/x/metadata/util"
)
const (
MaxMessageSize = math.MaxUint16
)
type metadata struct {
key string
bufferSize int
key string
}
func (h *tapHandler) parseMetadata(md mdata.Metadata) (err error) {
const (
key = "key"
bufferSize = "bufferSize"
key = "key"
)
h.md.key = mdutil.GetString(md, key)
h.md.bufferSize = mdutil.GetInt(md, bufferSize)
if h.md.bufferSize <= 0 {
h.md.bufferSize = 4096
}
return
}