• Mark Andrews's avatar
    Break lock order loop by sending TAT in an event · 3c4b68af
    Mark Andrews authored
    The dotat() function has been changed to send the TAT
    query asynchronously, so there's no lock order loop
    because we initialize the data first and then we schedule
    the TAT send to happen asynchronously.
    
    This breaks following lock-order loops:
    
    zone->lock (dns_zone_setviewcommit) while holding view->lock
    (dns_view_setviewcommit)
    
    keytable->lock (dns_keytable_find) while holding zone->lock
    (zone_asyncload)
    
    view->lock (dns_view_findzonecut) while holding keytable->lock
    (dns_keytable_forall)
    3c4b68af
server.h 9.79 KB