• Michał Kępień's avatar
    Do not recheck DNS_ZONEFLG_LOADPENDING in zone_asyncload() · f5079bb8
    Michał Kępień authored
    Remove a block of code which dates back to commit 8a2ab2b9, when
    dns_zone_asyncload() did not yet check DNS_ZONEFLG_LOADPENDING.
    Currently, no race in accessing DNS_ZONEFLG_LOADPENDING is possible any
    more, because:
    
      - dns_zone_asyncload() is still the only function which may queue
        zone_asyncload(),
    
      - dns_zone_asyncload() accesses DNS_ZONEFLG_LOADPENDING under a lock
        (and potentially queues an event under the same lock),
    
      - DNS_ZONEFLG_LOADPENDING is not cleared until the load actually
        completes.
    
    Thus, the rechecking code can be safely removed from zone_asyncload().
    
    Note that this also brings zone_asyncload() to a state in which the
    completion callback is always invoked.  This is required to prevent
    leaking memory in case something goes wrong in zone_asyncload() and a
    zone table the zone belongs to is indefinitely left with a positive
    reference count.
    f5079bb8
zone.c 502 KB