private void OnConnectToPeerWithTrackerMessage(PacketHeader packetHeader, Connection connection, ConnectToPeerWithTrackerMessage incomingObject) { Peer peerToConnect = allPeers.FirstOrDefault(peer => peer.Address.Equals(incomingObject.RecieverAddress)); if (peerToConnect != null) { if (!ConnectedPeers.Contains(peerToConnect)) { ConnectedPeers.Add(peerToConnect); } if (!peerToConnect.ConnectedPeers.Contains(this)) { peerToConnect.ConnectedPeers.Add(this); try { peerToConnect.Connection.SendObject(incomingObject.GetType().Name, incomingObject); } catch { peerToConnect.OnError(); } } } //если трекер не нашел пир адресат то отправляем отправителю дисконнект адресата else { var message = new PeerDisconnectMessage(incomingObject.SenderAddress); Connection.SendObject(message.GetType().Name, message); } }