private void OnUdpReady(Socket socket) { string peerName; var frame = ReceiveUdpFrame(out peerName); // If filter is set, check that beacon matches it bool isValid = false; if (m_filter != null) { if (frame.MessageSize >= m_filter.MessageSize && Compare(frame, m_filter, m_filter.MessageSize)) { isValid = true; } } // If valid, discard our own broadcasts, which UDP echoes to us if (isValid && m_transmit != null) { if (frame.MessageSize == m_transmit.MessageSize && Compare(frame, m_transmit, m_transmit.MessageSize)) { isValid = false; } } // If still a valid beacon, send on to the API if (isValid) { m_pipe.SendMoreFrame(peerName).SendFrame(frame.Buffer, frame.MessageSize); } }