世界 пре 2 година
родитељ
комит
168253b851
4 измењених фајлова са 11 додато и 2 уклоњено
  1. 7 1
      inbound/default_udp.go
  2. 1 0
      inbound/direct.go
  3. 1 0
      inbound/hysteria.go
  4. 2 1
      option/inbound.go

+ 7 - 1
inbound/default_udp.go

@@ -18,7 +18,13 @@ import (
 func (a *myInboundAdapter) ListenUDP() (net.PacketConn, error) {
 func (a *myInboundAdapter) ListenUDP() (net.PacketConn, error) {
 	bindAddr := M.SocksaddrFrom(netip.Addr(a.listenOptions.Listen), a.listenOptions.ListenPort)
 	bindAddr := M.SocksaddrFrom(netip.Addr(a.listenOptions.Listen), a.listenOptions.ListenPort)
 	var lc net.ListenConfig
 	var lc net.ListenConfig
-	if !a.listenOptions.UDPFragment {
+	var udpFragment bool
+	if a.listenOptions.UDPFragment != nil {
+		udpFragment = *a.listenOptions.UDPFragment
+	} else {
+		udpFragment = a.listenOptions.UDPFragmentDefault
+	}
+	if !udpFragment {
 		lc.Control = control.Append(lc.Control, control.DisableUDPFragment())
 		lc.Control = control.Append(lc.Control, control.DisableUDPFragment())
 	}
 	}
 	udpConn, err := lc.ListenPacket(a.ctx, M.NetworkFromNetAddr(N.NetworkUDP, bindAddr.Addr), bindAddr.String())
 	udpConn, err := lc.ListenPacket(a.ctx, M.NetworkFromNetAddr(N.NetworkUDP, bindAddr.Addr), bindAddr.String())

+ 1 - 0
inbound/direct.go

@@ -25,6 +25,7 @@ type Direct struct {
 }
 }
 
 
 func NewDirect(ctx context.Context, router adapter.Router, logger log.ContextLogger, tag string, options option.DirectInboundOptions) *Direct {
 func NewDirect(ctx context.Context, router adapter.Router, logger log.ContextLogger, tag string, options option.DirectInboundOptions) *Direct {
+	options.UDPFragmentDefault = true
 	inbound := &Direct{
 	inbound := &Direct{
 		myInboundAdapter: myInboundAdapter{
 		myInboundAdapter: myInboundAdapter{
 			protocol:      C.TypeDirect,
 			protocol:      C.TypeDirect,

+ 1 - 0
inbound/hysteria.go

@@ -43,6 +43,7 @@ type Hysteria struct {
 }
 }
 
 
 func NewHysteria(ctx context.Context, router adapter.Router, logger log.ContextLogger, tag string, options option.HysteriaInboundOptions) (*Hysteria, error) {
 func NewHysteria(ctx context.Context, router adapter.Router, logger log.ContextLogger, tag string, options option.HysteriaInboundOptions) (*Hysteria, error) {
+	options.UDPFragmentDefault = true
 	quicConfig := &quic.Config{
 	quicConfig := &quic.Config{
 		InitialStreamReceiveWindow:     options.ReceiveWindowConn,
 		InitialStreamReceiveWindow:     options.ReceiveWindowConn,
 		MaxStreamReceiveWindow:         options.ReceiveWindowConn,
 		MaxStreamReceiveWindow:         options.ReceiveWindowConn,

+ 2 - 1
option/inbound.go

@@ -115,7 +115,8 @@ type ListenOptions struct {
 	Listen                      ListenAddress `json:"listen"`
 	Listen                      ListenAddress `json:"listen"`
 	ListenPort                  uint16        `json:"listen_port,omitempty"`
 	ListenPort                  uint16        `json:"listen_port,omitempty"`
 	TCPFastOpen                 bool          `json:"tcp_fast_open,omitempty"`
 	TCPFastOpen                 bool          `json:"tcp_fast_open,omitempty"`
-	UDPFragment                 bool          `json:"udp_fragment,omitempty"`
+	UDPFragment                 *bool         `json:"udp_fragment,omitempty"`
+	UDPFragmentDefault          bool          `json:"-"`
 	UDPTimeout                  int64         `json:"udp_timeout,omitempty"`
 	UDPTimeout                  int64         `json:"udp_timeout,omitempty"`
 	ProxyProtocol               bool          `json:"proxy_protocol,omitempty"`
 	ProxyProtocol               bool          `json:"proxy_protocol,omitempty"`
 	ProxyProtocolAcceptNoHeader bool          `json:"proxy_protocol_accept_no_header,omitempty"`
 	ProxyProtocolAcceptNoHeader bool          `json:"proxy_protocol_accept_no_header,omitempty"`