internal override bool HandleResponse(mDNS dns) { ServiceInfo info = (ServiceInfo)dns.services[name.ToLower()]; if (info != null && (port != info.port || !server.ToUpper().Equals(dns.LocalHost.Name.ToUpper()))) { logger.Debug("handleResponse() Denial detected"); if (info.State.Probing) { string oldName = info.QualifiedName.ToLower(); info.SetName(dns.IncrementName(info.getName())); dns.services.Remove(oldName); dns.services[info.QualifiedName.ToLower()] = info; logger.Debug("handleResponse() New unique name chose:" + info.getName()); } info.RevertState(); return(true); } return(false); }
internal override bool HandleQuery(mDNS dns, long expirationTime) { ServiceInfo info = (ServiceInfo)dns.services[name.ToLower()]; if (info != null && (port != info.port || !server.ToUpper().Equals(dns.LocalHost.Name.ToUpper()))) { logger.Debug("handleQuery() Conflicting probe detected"); // Tie breaker test if (info.State.Probing && lexCompare(new Service(info.QualifiedName, DNSConstants.TYPE_SRV, DNSConstants.CLASS_IN | DNSConstants.CLASS_UNIQUE, DNSConstants.DNS_TTL, info.priority, info.weight, info.port, dns.LocalHost.Name)) >= 0) { // We lost the tie break string oldName = info.QualifiedName.ToLower(); info.SetName(dns.IncrementName(info.getName())); dns.services.Remove(oldName); dns.services[info.QualifiedName.ToLower()] = info; logger.Debug("handleQuery() Lost tie break: new unique name chosen:" + info.getName()); } info.RevertState(); return(true); } return(false); }