From 6c4850634b8b65a46aec13b085b7912c2f26ece6 Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Fri, 7 Sep 2018 15:00:46 +0200 Subject: [PATCH] better handling of nil stream settings --- transport/internet/dialer.go | 18 +++++++----------- transport/internet/tcp_hub.go | 9 +++++++++ 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/transport/internet/dialer.go b/transport/internet/dialer.go index 8047d15e..29051a02 100644 --- a/transport/internet/dialer.go +++ b/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() diff --git a/transport/internet/tcp_hub.go b/transport/internet/tcp_hub.go index 24e2162d..506199a0 100644 --- a/transport/internet/tcp_hub.go +++ b/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 {