X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=src%2Fresolve%2Fresolved-manager.c;h=3d2979dbbe196922eba809f3dcad72f6f1b592f8;hb=ad867662936a4c7ab2c7116d804c272338801231;hp=8718ea40b298c1d1cbcac7d7c93340e119c3e1ef;hpb=e9f3d2d508bfd9fb5b54e82994bda365a71eb864;p=elogind.git diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c index 8718ea40b..3d2979dbb 100644 --- a/src/resolve/resolved-manager.c +++ b/src/resolve/resolved-manager.c @@ -577,7 +577,7 @@ int manager_dns_ipv4_recv(Manager *m, DnsPacket **ret) { l = recvmsg(fd, &mh, 0); if (l < 0) { - if (errno == EAGAIN) + if (errno == EAGAIN || errno == EINTR) return 0; return -errno; @@ -626,7 +626,7 @@ int manager_dns_ipv6_recv(Manager *m, DnsPacket **ret) { l = recvmsg(fd, &mh, 0); if (l < 0) { - if (errno == EAGAIN) + if (errno == EAGAIN || errno == EINTR) return 0; return -errno; @@ -653,11 +653,12 @@ static int on_dns_ipv4_packet(sd_event_source *s, int fd, uint32_t revents, void if (r <= 0) return r; - t = hashmap_get(m->dns_query_transactions, UINT_TO_PTR(DNS_PACKET_HEADER(p)->id)); + t = hashmap_get(m->dns_query_transactions, UINT_TO_PTR(DNS_PACKET_ID(p))); if (!t) return 0; - return dns_query_transaction_reply(t, p); + dns_query_transaction_reply(t, p); + return 0; } static int on_dns_ipv6_packet(sd_event_source *s, int fd, uint32_t revents, void *userdata) { @@ -670,11 +671,12 @@ static int on_dns_ipv6_packet(sd_event_source *s, int fd, uint32_t revents, void if (r <= 0) return r; - t = hashmap_get(m->dns_query_transactions, UINT_TO_PTR(DNS_PACKET_HEADER(p)->id)); + t = hashmap_get(m->dns_query_transactions, UINT_TO_PTR(DNS_PACKET_ID(p))); if (!t) return 0; - return dns_query_transaction_reply(t, p); + dns_query_transaction_reply(t, p); + return 0; } int manager_dns_ipv4_fd(Manager *m) {