summaryrefslogtreecommitdiffstats
path: root/bind-95-rh452060.patch
diff options
context:
space:
mode:
Diffstat (limited to 'bind-95-rh452060.patch')
-rw-r--r--bind-95-rh452060.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/bind-95-rh452060.patch b/bind-95-rh452060.patch
new file mode 100644
index 0000000..58808b0
--- /dev/null
+++ b/bind-95-rh452060.patch
@@ -0,0 +1,40 @@
+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;
+ }
+