private void HandleRequest(UdpClient udpClient, IPEndPoint clientEndpoint, byte[] requestMetadata) { // check if request packet is damaged var request = DiscoveryMetadataHelper.Decode(requestMetadata); if (request == null) { return; } // make sure discovery metadata matches the request if (!ResponseMetadata.Matches(request) || Stopped) { return; } // send a response SafePerform(() => { udpClient.BeginSend(ResponseMetadataPacket, ResponseMetadataPacket.Length, clientEndpoint, SendCallback, udpClient); }); }