- Remove heartbeat logs

- Fix relay client tests
- Fix auth ID unmarshalling
- Add magic header check
This commit is contained in:
Zoltán Papp 2024-07-08 17:55:48 +02:00
parent 931f165c9a
commit a9e6742d9a
6 changed files with 15 additions and 8 deletions

View File

@ -308,7 +308,6 @@ func (c *Client) readLoop(relayConn net.Conn) {
switch msgType { switch msgType {
case messages.MsgTypeHealthCheck: case messages.MsgTypeHealthCheck:
log.Debugf("on new heartbeat")
msg := messages.MarshalHealthcheck() msg := messages.MarshalHealthcheck()
_, wErr := c.relayConn.Write(msg) _, wErr := c.relayConn.Write(msg)
if wErr != nil { if wErr != nil {

View File

@ -32,10 +32,10 @@ func TestMain(m *testing.M) {
func TestClient(t *testing.T) { func TestClient(t *testing.T) {
ctx := context.Background() ctx := context.Background()
srvCfg := server.ListenerConfig{Address: serverListenAddr}
srv := server.NewServer(serverURL, false, av) srv := server.NewServer(serverURL, false, av)
go func() { go func() {
err := srv.Listen(srvCfg) listenCfg := server.ListenerConfig{Address: serverListenAddr}
err := srv.Listen(listenCfg)
if err != nil { if err != nil {
t.Fatalf("failed to bind server: %s", err) 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") clientAlice := NewClient(ctx, serverURL, hmacTokenStore, "alice")
err := clientAlice.Connect() err := clientAlice.Connect()
if err != nil { if err != nil {
@ -55,6 +56,7 @@ func TestClient(t *testing.T) {
} }
defer clientAlice.Close() defer clientAlice.Close()
t.Log("placeholder connecting to server")
clientPlaceHolder := NewClient(ctx, serverURL, hmacTokenStore, "clientPlaceHolder") clientPlaceHolder := NewClient(ctx, serverURL, hmacTokenStore, "clientPlaceHolder")
err = clientPlaceHolder.Connect() err = clientPlaceHolder.Connect()
if err != nil { if err != nil {
@ -62,6 +64,7 @@ func TestClient(t *testing.T) {
} }
defer clientPlaceHolder.Close() defer clientPlaceHolder.Close()
t.Log("Bob connecting to server")
clientBob := NewClient(ctx, serverURL, hmacTokenStore, "bob") clientBob := NewClient(ctx, serverURL, hmacTokenStore, "bob")
err = clientBob.Connect() err = clientBob.Connect()
if err != nil { if err != nil {
@ -69,11 +72,13 @@ func TestClient(t *testing.T) {
} }
defer clientBob.Close() defer clientBob.Close()
t.Log("Alice open connection to Bob")
connAliceToBob, err := clientAlice.OpenConn("bob") connAliceToBob, err := clientAlice.OpenConn("bob")
if err != nil { if err != nil {
t.Fatalf("failed to bind channel: %s", err) t.Fatalf("failed to bind channel: %s", err)
} }
t.Log("Bob open connection to Alice")
connBobToAlice, err := clientBob.OpenConn("alice") connBobToAlice, err := clientBob.OpenConn("alice")
if err != nil { if err != nil {
t.Fatalf("failed to bind channel: %s", err) t.Fatalf("failed to bind channel: %s", err)

View File

@ -8,7 +8,7 @@ import (
const ( const (
prefixLength = 4 prefixLength = 4
IDSize = sha256.Size + 4 // 4 is equal with len(prefix) IDSize = prefixLength + sha256.Size
) )
var ( var (

View File

@ -5,7 +5,7 @@ import (
) )
func TestHashID(t *testing.T) { func TestHashID(t *testing.T) {
hashedID, hashedStringId := HashID("abc") hashedID, hashedStringId := HashID("alice")
enc := HashIDToString(hashedID) enc := HashIDToString(hashedID)
if enc != hashedStringId { if enc != hashedStringId {
t.Errorf("expected %s, got %s", hashedStringId, enc) t.Errorf("expected %s, got %s", hashedStringId, enc)

View File

@ -89,6 +89,8 @@ func MarshalHelloMsg(peerID []byte, additions []byte) ([]byte, error) {
if len(peerID) != IDSize { if len(peerID) != IDSize {
return nil, fmt.Errorf("invalid peerID length: %d", len(peerID)) 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 := make([]byte, 5, headerSizeHello+len(additions))
msg[0] = byte(MsgTypeHello) msg[0] = byte(MsgTypeHello)
copy(msg[1:5], magicHeader) copy(msg[1:5], magicHeader)
@ -101,8 +103,10 @@ func UnmarshalHelloMsg(msg []byte) ([]byte, []byte, error) {
if len(msg) < headerSizeHello { if len(msg) < headerSizeHello {
return nil, nil, fmt.Errorf("invalid 'hello' messge") return nil, nil, fmt.Errorf("invalid 'hello' messge")
} }
bytes.Equal(msg[1:5], magicHeader) if !bytes.Equal(msg[1:5], magicHeader) {
return msg[5:], msg[headerSizeHello:], nil return nil, nil, fmt.Errorf("invalid magic header")
}
return msg[5 : 5+IDSize], msg[headerSizeHello:], nil
} }
func MarshalHelloResponse(DomainAddress string) ([]byte, error) { func MarshalHelloResponse(DomainAddress string) ([]byte, error) {

View File

@ -147,7 +147,6 @@ func (p *Peer) healthcheck(ctx context.Context, hc *healthcheck.Sender) {
for { for {
select { select {
case <-hc.HealthCheck: case <-hc.HealthCheck:
p.log.Debugf("sending healthcheck message")
_, err := p.Write(messages.MarshalHealthcheck()) _, err := p.Write(messages.MarshalHealthcheck())
if err != nil { if err != nil {
p.log.Errorf("failed to send healthcheck message: %s", err) p.log.Errorf("failed to send healthcheck message: %s", err)