Browse Source

change CreatePacketAddrConn signature

Shelikhoo 4 years ago
parent
commit
75a2448c48
1 changed files with 17 additions and 10 deletions
  1. 17 10
      common/net/packetaddr/connection_adaptor.go

+ 17 - 10
common/net/packetaddr/connection_adaptor.go

@@ -1,6 +1,7 @@
 package packetaddr
 package packetaddr
 
 
 import (
 import (
+	"context"
 	gonet "net"
 	gonet "net"
 	"sync"
 	"sync"
 	"time"
 	"time"
@@ -9,6 +10,7 @@ import (
 	"github.com/v2fly/v2ray-core/v4/common/buf"
 	"github.com/v2fly/v2ray-core/v4/common/buf"
 	"github.com/v2fly/v2ray-core/v4/common/errors"
 	"github.com/v2fly/v2ray-core/v4/common/errors"
 	"github.com/v2fly/v2ray-core/v4/common/net"
 	"github.com/v2fly/v2ray-core/v4/common/net"
+	"github.com/v2fly/v2ray-core/v4/features/routing"
 	"github.com/v2fly/v2ray-core/v4/transport"
 	"github.com/v2fly/v2ray-core/v4/transport"
 )
 )
 
 
@@ -31,19 +33,24 @@ func ToPacketAddrConn(link *transport.Link, dest net.Destination) (net.PacketCon
 	}
 	}
 }
 }
 
 
-func CreatePacketAddrConn(link *transport.Link, isStream bool) (net.PacketConn, net.Destination, error) {
+func CreatePacketAddrConn(ctx context.Context, dispatcher routing.Dispatcher, isStream bool) (net.PacketConn, error) {
 	if isStream {
 	if isStream {
-		return nil, net.Destination{}, errUnsupported
+		return nil, errUnsupported
+	}
+	packetDest := net.Destination{
+		Address: net.DomainAddress(seqPacketMagicAddress),
+		Port:    0,
+		Network: net.Network_UDP,
+	}
+	link, err := dispatcher.Dispatch(ctx, packetDest)
+	if err != nil {
+		return nil, err
 	}
 	}
 	return &packetConnectionAdaptor{
 	return &packetConnectionAdaptor{
-			readerAccess: &sync.Mutex{},
-			readerBuffer: nil,
-			link:         link,
-		}, net.Destination{
-			Address: net.DomainAddress(seqPacketMagicAddress),
-			Port:    0,
-			Network: net.Network_UDP,
-		}, nil
+		readerAccess: &sync.Mutex{},
+		readerBuffer: nil,
+		link:         link,
+	}, nil
 }
 }
 
 
 type packetConnectionAdaptor struct {
 type packetConnectionAdaptor struct {