public bool ContactExists(IPEndPoint contactEP) { _lock.TryEnterReadLock(LOCK_TIMEOUT); try { if (_contacts == null) { if (_leftBucket.ContactExists(contactEP)) { return(true); } else { return(_rightBucket.ContactExists(contactEP)); } } else { foreach (NodeContact contact in _contacts.Values) { if (contact.NodeEP.Equals(contactEP)) { return(true); } } foreach (NodeContact contact in _replacementContacts.Values) { if (contact.NodeEP.Equals(contactEP)) { return(true); } } return(false); } } finally { _lock.ExitReadLock(); } }