Browse Source

better handling of nil stream settings

pull/1269/head
Darien Raymond 6 years ago
parent
commit
6c4850634b
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169
  1. 18
      transport/internet/dialer.go
  2. 9
      transport/internet/tcp_hub.go

18
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
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 {

Loading…
Cancel
Save