Explorar o código

add a log_warn to notify us of yet another potential dns.c bug

svn:r1167
Roger Dingledine %!s(int64=21) %!d(string=hai) anos
pai
achega
9a55700747
Modificáronse 1 ficheiros con 6 adicións e 0 borrados
  1. 6 0
      src/or/dns.c

+ 6 - 0
src/or/dns.c

@@ -76,6 +76,12 @@ static void purge_expired_resolves(uint32_t now) {
   while(oldest_cached_resolve && (oldest_cached_resolve->expire < now)) {
     resolve = oldest_cached_resolve;
     log(LOG_DEBUG,"Forgetting old cached resolve (expires %lu)", (unsigned long)resolve->expire);
+    if(resolve->state == CACHE_STATE_PENDING) {
+      log_fn(LOG_WARN,"Expiring a dns resolve that's still pending. Forgot to cull it?");
+      /* XXX if resolve->pending_connections is used, then we're probably
+       * introducing bugs by closing resolve without notifying those streams.
+       */
+    }
     oldest_cached_resolve = resolve->next;
     if(!oldest_cached_resolve) /* if there are no more, */
       newest_cached_resolve = NULL; /* then make sure the list's tail knows that too */