fix dtls connection

This commit is contained in:
ginuerzh
2022-12-23 18:56:58 +08:00
parent fb29d5c80e
commit bb106e2d89
11 changed files with 249 additions and 58 deletions

View File

@ -12,6 +12,7 @@ import (
admission "github.com/go-gost/x/admission/wrapper"
xnet "github.com/go-gost/x/internal/net"
"github.com/go-gost/x/internal/net/proxyproto"
xdtls "github.com/go-gost/x/internal/util/dtls"
climiter "github.com/go-gost/x/limiter/conn/wrapper"
limiter "github.com/go-gost/x/limiter/traffic/wrapper"
metrics "github.com/go-gost/x/metrics/wrapper"
@ -88,7 +89,12 @@ func (l *dtlsListener) Init(md md.Metadata) (err error) {
}
func (l *dtlsListener) Accept() (conn net.Conn, err error) {
return l.ln.Accept()
c, err := l.ln.Accept()
if err != nil {
return
}
conn = xdtls.Conn(c, l.md.bufferSize)
return
}
func (l *dtlsListener) Addr() net.Addr {

View File

@ -7,19 +7,24 @@ import (
mdutil "github.com/go-gost/core/metadata/util"
)
const (
defaultBufferSize = 1200
)
type metadata struct {
mtu int
bufferSize int
flightInterval time.Duration
}
func (l *dtlsListener) parseMetadata(md mdata.Metadata) (err error) {
const (
mtu = "mtu"
flightInterval = "flightInterval"
)
l.md.mtu = mdutil.GetInt(md, "dtls.mtu", "mtu")
l.md.bufferSize = mdutil.GetInt(md, "dtls.bufferSize", "bufferSize")
if l.md.bufferSize <= 0 {
l.md.bufferSize = defaultBufferSize
}
l.md.mtu = mdutil.GetInt(md, mtu)
l.md.flightInterval = mdutil.GetDuration(md, flightInterval)
l.md.flightInterval = mdutil.GetDuration(md, "dtls.flightInterval", "flightInterval")
return nil
}