1. 15 Feb, 2018 5 commits
    • Michał Kępień's avatar
      Add CHANGES entry · 801dfe8f
      Michał Kępień authored
      4892.	[bug]		named could leak memory when "rndc reload" was invoked
      			before all zone loading actions triggered by a previous
      			"rndc reload" command were completed. [RT #47076]
    • 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
        - 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
      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.
    • Michał Kępień's avatar
      Asynchronous zone load events have no way of getting canceled · b9e9361c
      Michał Kępień authored
      Code handling cancellation of asynchronous zone load events was likely
      copied over from other functions when asynchronous zone loading was
      first implemented in commit 8a2ab2b9.  However, unlike those other
      functions, asynchronous zone loading events currently have no way of
      getting canceled once they get posted, which means the aforementioned
      code is effectively dead.  Remove it to prevent confusion.
    • Michał Kępień's avatar
      Only clear DNS_ZONEFLG_LOADPENDING in zone_asyncload() if zone loading is completed immediately · 29b7efdd
      Michał Kępień authored
      zone_load() is not always synchronous, it may only initiate an
      asynchronous load and return DNS_R_CONTINUE, which means zone loading
      has not yet been completed.  In such a case, zone_asyncload() must not
      clear DNS_ZONEFLG_LOADPENDING immediately and leave that up to
    • Michał Kępień's avatar
      Lock zone before checking whether its asynchronous load is already pending · 0e4fba2c
      Michał Kępień authored
      While this is not an issue in named, which only calls
      dns_zone_asyncload() from task-exclusive mode, this function is exported
      by libdns and thus may in theory be concurrently called for the same
      zone by multiple threads.  It also does not hurt to be consistent
      locking-wise with other DNS_ZONEFLG_LOADPENDING accesses.
  2. 14 Feb, 2018 4 commits
  3. 12 Feb, 2018 23 commits
  4. 11 Feb, 2018 1 commit
  5. 10 Feb, 2018 1 commit
  6. 09 Feb, 2018 6 commits