• M
    nss: Don't fail on empty files · d7dd4e1f
    Michal Privoznik 提交于
    Before we rewrote nss plugin so that it doesn't use libvirt's
    internal functions it used virLeaseReadCustomLeaseFile() to parse
    .status files. After the rewrite it's using read() + yajl_parse()
    + yajl_complete_parse(). There's one catch though,
    virLeaseReadCustomLeaseFile() skipped over empty files.
    
    An empty .status file is created when a network is started. This
    is because we configure dnsmasq to use our leasehelper. So the
    first thing it does it calls it as follows:
    
      DNSMASQ_INTERFACE=virbr0 /usr/libexec/libvirt_leaseshelper init
    
    which causes the leasehelper to create empty virbr0.status file.
    If there is only one libvirt network then that is no problem -
    there are no other .status files to parse anyway. But if there
    are two or more networks then the first empty .status file causes
    whole parsing process and subsequently the whole name lookup
    process to fail.
    
    Fixes: v5.7.0-rc1~343
    Reported-by: NPavel Hrdina <phrdina@redhat.com>
    Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
    Reviewed-by: NDaniel P. Berrangé <berrange@redhat.com>
    d7dd4e1f
libvirt_nss_leases.c 10.8 KB