You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.1 KiB
40 lines
1.1 KiB
diff -up bind-9.5.0-P2/bin/dig/dighost.c.rh452060 bind-9.5.0-P2/bin/dig/dighost.c |
|
--- bind-9.5.0-P2/bin/dig/dighost.c.rh452060 2008-12-01 22:30:01.000000000 +0100 |
|
+++ bind-9.5.0-P2/bin/dig/dighost.c 2008-12-01 22:30:07.000000000 +0100 |
|
@@ -1280,6 +1280,12 @@ clear_query(dig_query_t *query) { |
|
|
|
debug("clear_query(%p)", query); |
|
|
|
+ if (query->waiting_senddone) { |
|
+ debug("send_done not yet called"); |
|
+ query->pending_free = ISC_TRUE; |
|
+ return; |
|
+ } |
|
+ |
|
lookup = query->lookup; |
|
|
|
if (lookup->current_query == query) |
|
@@ -1301,10 +1307,7 @@ clear_query(dig_query_t *query) { |
|
isc_mempool_put(commctx, query->recvspace); |
|
isc_buffer_invalidate(&query->recvbuf); |
|
isc_buffer_invalidate(&query->lengthbuf); |
|
- if (query->waiting_senddone) |
|
- query->pending_free = ISC_TRUE; |
|
- else |
|
- isc_mem_free(mctx, query); |
|
+ isc_mem_free(mctx, query); |
|
} |
|
|
|
/*% |
|
@@ -2175,9 +2178,9 @@ send_done(isc_task_t *_task, isc_event_t |
|
isc_event_free(&event); |
|
|
|
if (query->pending_free) |
|
- isc_mem_free(mctx, query); |
|
+ clear_query(query); |
|
|
|
- check_if_done(); |
|
+ check_next_lookup(l); |
|
UNLOCK_LOOKUP; |
|
} |
|
|
|
|