diff --git a/tunnel/default.go b/tunnel/default.go index 842d0a95..e5f09708 100644 --- a/tunnel/default.go +++ b/tunnel/default.go @@ -111,25 +111,26 @@ func (t *tun) process() { for { select { case msg := <-t.send: - nmsg := &transport.Message{ - Header: msg.data.Header, + newMsg := &transport.Message{ + Header: make(map[string]string), Body: msg.data.Body, } - if nmsg.Header == nil { - nmsg.Header = make(map[string]string) + for k, v := range msg.data.Header { + newMsg.Header[k] = v } // set the tunnel id on the outgoing message - nmsg.Header["Micro-Tunnel-Id"] = msg.id + newMsg.Header["Micro-Tunnel-Id"] = msg.id // set the session id - nmsg.Header["Micro-Tunnel-Session"] = msg.session + newMsg.Header["Micro-Tunnel-Session"] = msg.session // send the message via the interface t.RLock() for _, link := range t.links { - link.Send(nmsg) + log.Debugf("Sending %+v to %s", newMsg, link.Remote()) + link.Send(newMsg) } t.RUnlock() case <-t.closed: @@ -170,6 +171,7 @@ func (t *tun) listen(link transport.Socket, listener bool) { var s *socket var exists bool + log.Debugf("Received %+v from %s", msg, link.Remote()) // if its a local listener then we use that as the session id // e.g we're using a loopback connecting to ourselves if listener { @@ -189,10 +191,12 @@ func (t *tun) listen(link transport.Socket, listener bool) { // no socket in existence if !exists { + log.Debugf("Skipping") // drop it, we don't care about // messages we don't know about continue } + log.Debugf("Using socket %s %s", s.id, s.session) // is the socket closed? select { @@ -398,6 +402,7 @@ func (t *tun) Init(opts ...Option) error { // Dial an address func (t *tun) Dial(addr string) (Conn, error) { + log.Debugf("Tunnel dialing %s", addr) c, ok := t.newSocket(addr, t.newSession()) if !ok { return nil, errors.New("error dialing " + addr) @@ -413,6 +418,7 @@ func (t *tun) Dial(addr string) (Conn, error) { // Accept a connection on the address func (t *tun) Listen(addr string) (Listener, error) { + log.Debugf("Tunnel listening on %s", addr) // create a new socket by hashing the address c, ok := t.newSocket(addr, "listener") if !ok { diff --git a/tunnel/listener.go b/tunnel/listener.go index 070b313b..368cf4a5 100644 --- a/tunnel/listener.go +++ b/tunnel/listener.go @@ -48,9 +48,6 @@ func (t *tunListener) process() { wait: make(chan bool), } - // first message - sock.recv <- m - // save the socket conns[m.session] = sock