diff --git a/relay/client/client.go b/relay/client/client.go index 9b0539b92..9c8bd0365 100644 --- a/relay/client/client.go +++ b/relay/client/client.go @@ -308,7 +308,6 @@ func (c *Client) readLoop(relayConn net.Conn) { switch msgType { case messages.MsgTypeHealthCheck: - log.Debugf("on new heartbeat") msg := messages.MarshalHealthcheck() _, wErr := c.relayConn.Write(msg) if wErr != nil { diff --git a/relay/client/client_test.go b/relay/client/client_test.go index 739c745fb..471667a71 100644 --- a/relay/client/client_test.go +++ b/relay/client/client_test.go @@ -32,10 +32,10 @@ func TestMain(m *testing.M) { func TestClient(t *testing.T) { ctx := context.Background() - srvCfg := server.ListenerConfig{Address: serverListenAddr} srv := server.NewServer(serverURL, false, av) go func() { - err := srv.Listen(srvCfg) + listenCfg := server.ListenerConfig{Address: serverListenAddr} + err := srv.Listen(listenCfg) if err != nil { t.Fatalf("failed to bind server: %s", err) } @@ -48,6 +48,7 @@ func TestClient(t *testing.T) { } }() + t.Log("alice connecting to server") clientAlice := NewClient(ctx, serverURL, hmacTokenStore, "alice") err := clientAlice.Connect() if err != nil { @@ -55,6 +56,7 @@ func TestClient(t *testing.T) { } defer clientAlice.Close() + t.Log("placeholder connecting to server") clientPlaceHolder := NewClient(ctx, serverURL, hmacTokenStore, "clientPlaceHolder") err = clientPlaceHolder.Connect() if err != nil { @@ -62,6 +64,7 @@ func TestClient(t *testing.T) { } defer clientPlaceHolder.Close() + t.Log("Bob connecting to server") clientBob := NewClient(ctx, serverURL, hmacTokenStore, "bob") err = clientBob.Connect() if err != nil { @@ -69,11 +72,13 @@ func TestClient(t *testing.T) { } defer clientBob.Close() + t.Log("Alice open connection to Bob") connAliceToBob, err := clientAlice.OpenConn("bob") if err != nil { t.Fatalf("failed to bind channel: %s", err) } + t.Log("Bob open connection to Alice") connBobToAlice, err := clientBob.OpenConn("alice") if err != nil { t.Fatalf("failed to bind channel: %s", err) diff --git a/relay/messages/id.go b/relay/messages/id.go index dbb49cc58..d80c09414 100644 --- a/relay/messages/id.go +++ b/relay/messages/id.go @@ -8,7 +8,7 @@ import ( const ( prefixLength = 4 - IDSize = sha256.Size + 4 // 4 is equal with len(prefix) + IDSize = prefixLength + sha256.Size ) var ( diff --git a/relay/messages/id_test.go b/relay/messages/id_test.go index a384e8662..271a8f90d 100644 --- a/relay/messages/id_test.go +++ b/relay/messages/id_test.go @@ -5,7 +5,7 @@ import ( ) func TestHashID(t *testing.T) { - hashedID, hashedStringId := HashID("abc") + hashedID, hashedStringId := HashID("alice") enc := HashIDToString(hashedID) if enc != hashedStringId { t.Errorf("expected %s, got %s", hashedStringId, enc) diff --git a/relay/messages/message.go b/relay/messages/message.go index dc2e9660c..95b8ed7eb 100644 --- a/relay/messages/message.go +++ b/relay/messages/message.go @@ -89,6 +89,8 @@ func MarshalHelloMsg(peerID []byte, additions []byte) ([]byte, error) { if len(peerID) != IDSize { return nil, fmt.Errorf("invalid peerID length: %d", len(peerID)) } + + // 5 = 1 byte for msg type, 4 byte for magic header msg := make([]byte, 5, headerSizeHello+len(additions)) msg[0] = byte(MsgTypeHello) copy(msg[1:5], magicHeader) @@ -101,8 +103,10 @@ func UnmarshalHelloMsg(msg []byte) ([]byte, []byte, error) { if len(msg) < headerSizeHello { return nil, nil, fmt.Errorf("invalid 'hello' messge") } - bytes.Equal(msg[1:5], magicHeader) - return msg[5:], msg[headerSizeHello:], nil + if !bytes.Equal(msg[1:5], magicHeader) { + return nil, nil, fmt.Errorf("invalid magic header") + } + return msg[5 : 5+IDSize], msg[headerSizeHello:], nil } func MarshalHelloResponse(DomainAddress string) ([]byte, error) { diff --git a/relay/server/peer.go b/relay/server/peer.go index 2869340a9..c49b8feca 100644 --- a/relay/server/peer.go +++ b/relay/server/peer.go @@ -147,7 +147,6 @@ func (p *Peer) healthcheck(ctx context.Context, hc *healthcheck.Sender) { for { select { case <-hc.HealthCheck: - p.log.Debugf("sending healthcheck message") _, err := p.Write(messages.MarshalHealthcheck()) if err != nil { p.log.Errorf("failed to send healthcheck message: %s", err)