+
+void dns_zone_item_conflict(DnsZoneItem *i) {
+ _cleanup_free_ char *pretty = NULL;
+
+ assert(i);
+
+ dns_resource_record_to_string(i->rr, &pretty);
+ log_info("Detected conflict on %s", strna(pretty));
+
+ /* Withdraw the conflict item */
+ i->state = DNS_ZONE_ITEM_WITHDRAWN;
+
+ /* Maybe change the hostname */
+ if (dns_name_equal(i->scope->manager->hostname, DNS_RESOURCE_KEY_NAME(i->rr->key)) > 0)
+ manager_next_hostname(i->scope->manager);
+}
+
+void dns_zone_item_ready(DnsZoneItem *i) {
+ assert(i);
+ assert(i->probe_transaction);
+
+ if (i->block_ready > 0)
+ return;
+
+ if (IN_SET(i->probe_transaction->state, DNS_TRANSACTION_NULL, DNS_TRANSACTION_PENDING))
+ return;
+
+ if (i->probe_transaction->state != DNS_TRANSACTION_SUCCESS) {
+ _cleanup_free_ char *pretty = NULL;
+
+ dns_resource_record_to_string(i->rr, &pretty);
+ log_debug("Record %s successfully probed.", strna(pretty));
+
+ dns_zone_item_probe_stop(i);
+ i->state = DNS_ZONE_ITEM_ESTABLISHED;
+
+ } else
+ dns_zone_item_conflict(i);
+}