diff --git a/tunnel/default.go b/tunnel/default.go index d62dd66e..5d27809a 100644 --- a/tunnel/default.go +++ b/tunnel/default.go @@ -814,6 +814,14 @@ func (t *tun) Dial(channel string, opts ...DialOption) (Session, error) { // set the dial timeout c.timeout = options.Timeout + // don't bother with the song and dance below + // we're just going to assume things come online + // as and when. + if c.multicast { + return c, nil + } + + // non multicast so we need to find the link t.RLock() for _, link := range t.links { link.RLock() diff --git a/tunnel/listener.go b/tunnel/listener.go index 03ada54a..e60ff396 100644 --- a/tunnel/listener.go +++ b/tunnel/listener.go @@ -64,8 +64,9 @@ func (t *tunListener) process() { sess, ok := conns[m.session] log.Debugf("Tunnel listener received channel %s session %s exists: %t", m.channel, m.session, ok) if !ok { - // only create new sessions on open message - if m.typ != "open" { + switch m.typ { + case "open", "session": + default: continue } @@ -104,9 +105,6 @@ func (t *tunListener) process() { // send to accept chan case t.accept <- sess: } - - // continue - continue } // an existing session was found