add new metadata for dtls

This commit is contained in:
ginuerzh
2022-12-17 22:40:45 +08:00
parent 61fdebe630
commit 3b21b41ab3
7 changed files with 83 additions and 16 deletions

View File

@ -46,12 +46,14 @@ func (d *dtlsDialer) Dial(ctx context.Context, addr string, opts ...dialer.DialO
conn, err := options.NetDialer.Dial(ctx, "udp", addr)
if err != nil {
d.logger.Error(err)
return nil, err
}
tlsCfg := d.options.TLSConfig
if tlsCfg == nil {
tlsCfg = &tls.Config{}
tlsCfg = &tls.Config{
InsecureSkipVerify: true,
}
}
config := dtls.Config{
Certificates: tlsCfg.Certificates,
@ -59,6 +61,8 @@ func (d *dtlsDialer) Dial(ctx context.Context, addr string, opts ...dialer.DialO
ExtendedMasterSecret: dtls.RequireExtendedMasterSecret,
ServerName: tlsCfg.ServerName,
RootCAs: tlsCfg.RootCAs,
FlightInterval: d.md.flightInterval,
MTU: d.md.mtu,
}
return dtls.ClientWithContext(ctx, conn, &config)

View File

@ -1,11 +1,24 @@
package dtls
import (
"time"
mdata "github.com/go-gost/core/metadata"
mdutil "github.com/go-gost/core/metadata/util"
)
type metadata struct{}
type metadata struct {
mtu int
flightInterval time.Duration
}
func (d *dtlsDialer) parseMetadata(md mdata.Metadata) (err error) {
const (
mtu = "mtu"
flightInterval = "flightInterval"
)
d.md.mtu = mdutil.GetInt(md, mtu)
d.md.flightInterval = mdutil.GetDuration(md, flightInterval)
return
}