Pārlūkot izejas kodu

better handling of nil stream settings

Darien Raymond 7 gadi atpakaļ
vecāks
revīzija
6c4850634b
2 mainītis faili ar 16 papildinājumiem un 11 dzēšanām
  1. 7 11
      transport/internet/dialer.go
  2. 9 0
      transport/internet/tcp_hub.go

+ 7 - 11
transport/internet/dialer.go

@@ -24,20 +24,16 @@ func RegisterTransportDialer(protocol string, dialer Dialer) error {
 func Dial(ctx context.Context, dest net.Destination) (Connection, error) {
 	if dest.Network == net.Network_TCP {
 		streamSettings := StreamSettingsFromContext(ctx)
-		var protocol string
-		if streamSettings != nil {
-			protocol = streamSettings.ProtocolName
-		} else {
-			protocol = "tcp"
-			pSettings, err := CreateTransportConfigByName(protocol)
+		if streamSettings == nil {
+			s, err := ToMemoryStreamConfig(nil)
 			if err != nil {
-				return nil, newError("failed to create default config for protocol: ", protocol).Base(err)
+				return nil, newError("failed to create default stream settings").Base(err)
 			}
-			ctx = ContextWithStreamSettings(ctx, &MemoryStreamConfig{
-				ProtocolName:     protocol,
-				ProtocolSettings: pSettings,
-			})
+			streamSettings = s
+			ctx = ContextWithStreamSettings(ctx, streamSettings)
 		}
+
+		protocol = streamSettings.ProtocolName
 		dialer := transportDialerCache[protocol]
 		if dialer == nil {
 			return nil, newError(protocol, " dialer not registered").AtError()

+ 9 - 0
transport/internet/tcp_hub.go

@@ -29,6 +29,15 @@ type Listener interface {
 
 func ListenTCP(ctx context.Context, address net.Address, port net.Port, handler ConnHandler) (Listener, error) {
 	settings := StreamSettingsFromContext(ctx)
+	if settings == nil {
+		s, err := ToMemoryStreamConfig(nil)
+		if err != nil {
+			return nil, newError("failed to create default stream settings").Base(err)
+		}
+		settings = s
+		ctx = ContextWithStreamSettings(ctx, settings)
+	}
+
 	protocol := settings.ProtocolName
 	listenFunc := transportListenerCache[protocol]
 	if listenFunc == nil {