diff --git a/mc/beacon.go b/mc/beacon.go index 73b4e80b..c0e057f9 100644 --- a/mc/beacon.go +++ b/mc/beacon.go @@ -86,7 +86,13 @@ func (b *Beacon) run() { if debug { dlog.Printf("recv %d bytes from %s on %s", n, addr, dst.intf) } - b.outbox <- recv{bs[:n], addr} + select { + case b.outbox <- recv{bs[:n], addr}: + default: + if debug { + dlog.Println("Dropping message") + } + } } }() } diff --git a/mc/cmd/mctest/main.go b/mc/cmd/mctest/main.go new file mode 100644 index 00000000..0adac2ea --- /dev/null +++ b/mc/cmd/mctest/main.go @@ -0,0 +1,31 @@ +package main + +import ( + "encoding/binary" + "log" + "time" + + "github.com/calmh/syncthing/mc" +) + +func main() { + b := mc.NewBeacon("239.21.0.25", 21025) + go func() { + for { + bs, addr := b.Recv() + log.Printf("Received %d bytes from %s: %x %x", len(bs), addr, bs[:8], bs[8:]) + } + }() + go func() { + bs := [16]byte{} + binary.BigEndian.PutUint64(bs[:], uint64(time.Now().UnixNano())) + log.Printf("My ID: %x", bs[:8]) + for { + binary.BigEndian.PutUint64(bs[8:], uint64(time.Now().UnixNano())) + b.Send(bs[:]) + log.Printf("Sent %d bytes", len(bs[:])) + time.Sleep(10 * time.Second) + } + }() + select {} +}