manager_recv() sizes its buffer with next_datagram_size_fd(), which peeks at the datagram with MSG_PEEK|MSG_TRUNC. That peek makes the kernel verify the UDP checksum - which is the whole point of using it over FIONREAD - and hence also drop the datagram when the checksum is bad. The datagram that woke the event source can thus be gone by the time we peek at it, and the peek returns EAGAIN. manager_recv() returned that error, while the recvmsg_safe() below, which can fail the same way, already treats it as "no packet". The callers on the mDNS, LLMNR and stub listening sockets pass a negative return on to the event loop, which disables the event source, so a single datagram with a bad checksum - something anyone on the link can send - stops resolved from receiving on that socket for good. on_dns_packet() completes the transaction with -EAGAIN instead of retrying it. So return 0 on a transient error here too, like the other users of the helper on an event source do. Disconnect errors are left as they are: they show up here from ICMP errors on the connected UDP socket, and on_dns_packet() handles them.
System and Service Manager
Details
Most documentation is available on systemd's website.
Assorted, older, general information about systemd can be found in the systemd Wiki.
Information about build requirements is provided in the README file.
Consult our NEWS file for information about what's new in the most recent systemd versions.
Please see the Code Map for information about this repository's layout and content.
Please see the Hacking guide for information on how to hack on systemd and test your modifications.
Please see our Contribution Guidelines for more information about filing GitHub Issues and posting GitHub Pull Requests.
When preparing patches for systemd, please follow our Coding Style Guidelines.
If you are looking for support, please contact our mailing list, join our IRC channel #systemd on libera.chat or Matrix channel
Stable branches with backported patches are available in the stable repo.
We have a security bug bounty program sponsored by the Sovereign Tech Fund hosted on YesWeHack
Repositories with distribution packages built from git main are available on OBS, and also repositories with packages built from the latest stable release
