chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
man: mention docker as type of virtualization
[elogind.git]
/
src
/
resolve
/
resolved-dns-transaction.c
diff --git
a/src/resolve/resolved-dns-transaction.c
b/src/resolve/resolved-dns-transaction.c
index cf2987d1925cb4d922fc1e56f7e7e5e92a3ff240..74b0634142be5fbd9fd141969402c27ac44617be 100644
(file)
--- a/
src/resolve/resolved-dns-transaction.c
+++ b/
src/resolve/resolved-dns-transaction.c
@@
-78,7
+78,7
@@
int dns_transaction_new(DnsTransaction **ret, DnsScope *s, DnsQuestion *q) {
assert(s);
assert(q);
assert(s);
assert(q);
- r = hashmap_ensure_allocated(&s->manager->dns_transactions, NULL
, NULL
);
+ r = hashmap_ensure_allocated(&s->manager->dns_transactions, NULL);
if (r < 0)
return r;
if (r < 0)
return r;
@@
-120,7
+120,6
@@
static void dns_transaction_stop(DnsTransaction *t) {
static void dns_transaction_tentative(DnsTransaction *t, DnsPacket *p) {
_cleanup_free_ char *pretty = NULL;
DnsZoneItem *z;
static void dns_transaction_tentative(DnsTransaction *t, DnsPacket *p) {
_cleanup_free_ char *pretty = NULL;
DnsZoneItem *z;
- Iterator i;
assert(t);
assert(p);
assert(t);
assert(p);
@@
-138,16
+137,23
@@
static void dns_transaction_tentative(DnsTransaction *t, DnsPacket *p) {
/* RFC 4795, Section 4.1 says that the peer with the
* lexicographically smaller IP address loses */
/* RFC 4795, Section 4.1 says that the peer with the
* lexicographically smaller IP address loses */
- if (memcmp(&p->sender, &p->destination, FAMILY_ADDRESS_SIZE(p->family))
<
0) {
- log_debug("Peer has lexicographically
small
er IP address and thus lost in the conflict.");
+ if (memcmp(&p->sender, &p->destination, FAMILY_ADDRESS_SIZE(p->family))
>=
0) {
+ log_debug("Peer has lexicographically
larg
er IP address and thus lost in the conflict.");
return;
}
return;
}
- log_debug("We have the lexicographically
small
er IP address and thus lost in the conflict.");
+ log_debug("We have the lexicographically
larg
er IP address and thus lost in the conflict.");
t->block_gc++;
t->block_gc++;
- SET_FOREACH(z, t->zone_items, i)
+ while ((z = set_first(t->zone_items))) {
+ /* First, make sure the zone item drops the reference
+ * to us */
+ dns_zone_item_probe_stop(z);
+
+ /* Secondly, report this as conflict, so that we might
+ * look for a different hostname */
dns_zone_item_conflict(z);
dns_zone_item_conflict(z);
+ }
t->block_gc--;
dns_transaction_gc(t);
t->block_gc--;
dns_transaction_gc(t);