From 38323da57dd2ec509eb4e94e8be2081311af9c0a Mon Sep 17 00:00:00 2001 From: Ivan Date: Sun, 7 Sep 2025 02:23:30 -0500 Subject: [PATCH] Fix hash calculation in Destination to use TruncatedHash and improve logging for interface announcements --- pkg/destination/destination.go | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/pkg/destination/destination.go b/pkg/destination/destination.go index 285c7ea..922217d 100644 --- a/pkg/destination/destination.go +++ b/pkg/destination/destination.go @@ -1,7 +1,6 @@ package destination import ( - "crypto/sha256" "errors" "fmt" "log" @@ -117,19 +116,20 @@ func New(id *identity.Identity, direction byte, destType byte, appName string, t func (d *Destination) calculateHash() []byte { debugLog(DEBUG_TRACE, "Calculating hash for destination %s", d.ExpandName()) - nameHash := sha256.Sum256([]byte(d.ExpandName())) - identityHash := sha256.Sum256(d.identity.GetPublicKey()) + // hash identity first, then concatenate with name hash and truncate + identityHash := identity.TruncatedHash(d.identity.GetPublicKey()) + nameHash := identity.TruncatedHash([]byte(d.ExpandName())) - debugLog(DEBUG_ALL, "Name hash: %x", nameHash) debugLog(DEBUG_ALL, "Identity hash: %x", identityHash) + debugLog(DEBUG_ALL, "Name hash: %x", nameHash) - combined := append(nameHash[:], identityHash[:]...) - finalHash := sha256.Sum256(combined) + // Concatenate identity hash + name hash + combined := append(identityHash, nameHash...) + finalHash := identity.TruncatedHash(combined) - truncated := finalHash[:16] - debugLog(DEBUG_VERBOSE, "Calculated destination hash: %x", truncated) + debugLog(DEBUG_VERBOSE, "Calculated destination hash: %x", finalHash) - return truncated + return finalHash } func (d *Destination) ExpandName() string { @@ -169,13 +169,21 @@ func (d *Destination) Announce(appData []byte) error { } interfaces := d.transport.GetInterfaces() + log.Printf("[DEBUG-7] Got %d interfaces from transport", len(interfaces)) + var lastErr error - for _, iface := range interfaces { + for name, iface := range interfaces { + log.Printf("[DEBUG-7] Checking interface %s: enabled=%v, online=%v", name, iface.IsEnabled(), iface.IsOnline()) if iface.IsEnabled() && iface.IsOnline() { + log.Printf("[DEBUG-7] Sending announce to interface %s (%d bytes)", name, len(packet)) if err := iface.Send(packet, ""); err != nil { - log.Printf("[ERROR] Failed to send announce on interface %s: %v", iface.GetName(), err) + log.Printf("[ERROR] Failed to send announce on interface %s: %v", name, err) lastErr = err + } else { + log.Printf("[DEBUG-7] Successfully sent announce to interface %s", name) } + } else { + log.Printf("[DEBUG-7] Skipping interface %s (not enabled or not online)", name) } }