fix issue preveting get node when disco is missing (#1919)

Fixed #1816

Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
This commit is contained in:
Kristoffer Dalby 2024-05-01 17:06:42 +02:00 committed by GitHub
parent d5ed8bc074
commit 55b35f4160
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -306,11 +306,15 @@ func (node *Node) AfterFind(tx *gorm.DB) error {
} }
node.NodeKey = nodeKey node.NodeKey = nodeKey
// DiscoKey might be empty if a node has not sent it to headscale.
// This means that this might fail if the disco key is empty.
if node.DiscoKeyDatabaseField != "" {
var discoKey key.DiscoPublic var discoKey key.DiscoPublic
if err := discoKey.UnmarshalText([]byte(node.DiscoKeyDatabaseField)); err != nil { if err := discoKey.UnmarshalText([]byte(node.DiscoKeyDatabaseField)); err != nil {
return fmt.Errorf("unmarshalling disco key from db: %w", err) return fmt.Errorf("unmarshalling disco key from db: %w", err)
} }
node.DiscoKey = discoKey node.DiscoKey = discoKey
}
endpoints := make([]netip.AddrPort, len(node.EndpointsDatabaseField)) endpoints := make([]netip.AddrPort, len(node.EndpointsDatabaseField))
for idx, ep := range node.EndpointsDatabaseField { for idx, ep := range node.EndpointsDatabaseField {