Brussels / 4 & 5 February 2023


Why resolving two names in a GUI program is hard

Summary of available name resolution APIs on Linux and why a new one is needed

  • summary of common C library calls to translate name to IP address(es) and back
  • We have getaddrinfo() calls and nsswitch modules for different name resolution backends. But they provide blocking only calls.
  • BSD sockets allows hundreds or thousands concurrent connections from a single thread application. But resolving 4 different names in parallel is difficult from a single thread application.
  • When we have common GUI application loops for GLib or Qt, why we lack API integrating with them well?
  • Most of GUI applications should avoid blocking calls in main thread today.
  • Is it necessary to block on name resolution? How name resolution works and why I think asynchronous calls would work as well.
  • Why using just raw DNS libraries might not be a solution for everyone
  • Use .local zone plugin nss-mdns as example why a simple to use API for name resolution is needed not only for unicast DNS queries.
  • How to handle LLMNR protocol and not break other things, which happens with current systemd-resolved


Photo of Petr Menšík Petr Menšík