diff --git a/tunnel/default.go b/tunnel/default.go index fe63fe26..38f0f100 100644 --- a/tunnel/default.go +++ b/tunnel/default.go @@ -326,7 +326,7 @@ func (t *tun) process() { } // check the multicast mappings - if msg.mode > Unicast { + if msg.mode == Multicast { link.RLock() _, ok := link.channels[msg.channel] link.RUnlock() diff --git a/tunnel/session.go b/tunnel/session.go index 0cd3bcce..a185c3ce 100644 --- a/tunnel/session.go +++ b/tunnel/session.go @@ -125,7 +125,7 @@ func (s *session) Open() error { } // don't wait on multicast/broadcast - if s.mode > Unicast { + if s.mode == Multicast { s.accepted = true return nil } @@ -163,7 +163,7 @@ func (s *session) Accept() error { } // don't wait on multicast/broadcast - if s.mode > Unicast { + if s.mode == Multicast { return nil } @@ -223,7 +223,7 @@ func (s *session) Send(m *transport.Message) error { msg.data = data // if multicast don't set the link - if s.mode > Unicast { + if s.mode == Multicast { msg.link = "" } diff --git a/tunnel/tunnel.go b/tunnel/tunnel.go index 8b9b347a..f46c90b8 100644 --- a/tunnel/tunnel.go +++ b/tunnel/tunnel.go @@ -9,8 +9,11 @@ import ( ) const ( + // send over one link Unicast Mode = iota + // send to all channel listeners Multicast + // send to all listeners Broadcast ) @@ -25,6 +28,7 @@ var ( ErrLinkNotFound = errors.New("link not found") ) +// Mode of the session type Mode uint8 // Tunnel creates a gre tunnel on top of the go-micro/transport.