Fix announce packet creation and sending logic to use the announce package. Enhance error handling and logging for interface checks during packet transmission.

This commit is contained in:
2025-09-27 04:40:47 -05:00
parent f01b1f8bac
commit fdcb371582

View File

@@ -6,6 +6,7 @@ import (
"log"
"sync"
"github.com/Sudo-Ivan/reticulum-go/pkg/announce"
"github.com/Sudo-Ivan/reticulum-go/pkg/common"
"github.com/Sudo-Ivan/reticulum-go/pkg/identity"
"github.com/Sudo-Ivan/reticulum-go/pkg/transport"
@@ -149,14 +150,43 @@ func (d *Destination) Announce(appData []byte) error {
appData = d.defaultAppData
}
// Create announce packet using transport method
packet := transport.CreateAnnouncePacket(d.GetHash(), d.identity, appData, 0, d.transport.GetConfig())
// Create announce packet using announce package
announce, err := announce.New(d.identity, appData, false, d.transport.GetConfig())
if err != nil {
return fmt.Errorf("failed to create announce: %w", err)
}
packet := announce.GetPacket()
if packet == nil {
return errors.New("failed to create announce packet")
}
// Send announce packet using transport
return transport.SendAnnounce(packet)
// Send announce packet to all interfaces
log.Printf("[DEBUG-4] Sending announce packet to all interfaces")
if d.transport == nil {
return errors.New("transport not initialized")
}
interfaces := d.transport.GetInterfaces()
log.Printf("[DEBUG-7] Got %d interfaces from transport", len(interfaces))
var lastErr error
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", 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)
}
}
return lastErr
}
func (d *Destination) AcceptsLinks(accepts bool) {