diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c index 60c5ed006a..944a638ccf 100644 --- a/bin/dig/dighost.c +++ b/bin/dig/dighost.c @@ -15,7 +15,7 @@ * SOFTWARE. */ -/* $Id: dighost.c,v 1.79 2000/07/13 01:22:34 mws Exp $ */ +/* $Id: dighost.c,v 1.80 2000/07/13 01:49:44 mws Exp $ */ /* * Notice to programmers: Do not use this code as an example of how to @@ -103,7 +103,7 @@ isc_buffer_t *namebuf = NULL; dns_tsigkey_t *key = NULL; isc_boolean_t validated = ISC_TRUE; isc_entropy_t *entp = NULL; - +isc_mempool_t *commctx = NULL; extern isc_boolean_t isc_mem_debugging; isc_boolean_t debugging = ISC_FALSE; char *progname = NULL; @@ -142,7 +142,6 @@ hex_dump(isc_buffer_t *b) { printf("\n"); } - void fatal(const char *format, ...) { va_list args; @@ -566,6 +565,16 @@ setup_libs(void) { result = dst_lib_init(mctx, entp, 0); check_result(result, "dst_lib_init"); is_dst_up = ISC_TRUE; + + result = isc_mempool_create(mctx, COMMSIZE, &commctx); + check_result(result, "isc_mempool_create"); + isc_mempool_setname(commctx, "COMMPOOL"); + /* + * 6 and 2 set as reasonable parameters for 3 or 4 nameserver + * systems. + */ + isc_mempool_setfreemax(commctx, 6); + isc_mempool_setfillcount(commctx, 2); } static void @@ -646,7 +655,7 @@ clear_query(dig_query_t *query) { ISC_LIST_DEQUEUE(query->lengthlist, &query->lengthbuf, link); INSIST(query->recvspace != NULL); - isc_mem_put(mctx, query->recvspace, COMMSIZE); + isc_mempool_put(commctx, query->recvspace); isc_buffer_invalidate(&query->recvbuf); isc_buffer_invalidate(&query->lengthbuf); isc_mem_free(mctx, query); @@ -686,7 +695,7 @@ try_clear_lookup(dig_lookup_t *lookup) { if (lookup->timer != NULL) isc_timer_detach(&lookup->timer); INSIST(lookup->sendspace != NULL); - isc_mem_put(mctx, lookup->sendspace, COMMSIZE); + isc_mempool_put(commctx, lookup->sendspace); ptr = lookup; lookup = ISC_LIST_NEXT(lookup, link); @@ -1133,7 +1142,7 @@ setup_lookup(dig_lookup_t *lookup) { lookup->querysig = NULL; } - lookup->sendspace = isc_mem_get(mctx, COMMSIZE); + lookup->sendspace = isc_mempool_get(commctx); if (lookup->sendspace == NULL) fatal("memory allocation failure"); @@ -1180,7 +1189,7 @@ setup_lookup(dig_lookup_t *lookup) { ISC_LIST_INIT(query->recvlist); ISC_LIST_INIT(query->lengthlist); query->sock = NULL; - query->recvspace = isc_mem_get(mctx, COMMSIZE); + query->recvspace = isc_mempool_get(commctx); if (query->recvspace == NULL) fatal("memory allocation failure"); @@ -2187,6 +2196,10 @@ free_lists(void) { o = ISC_LIST_NEXT(o, link); isc_mem_free(mctx, ptr); } + if (commctx != NULL) { + debug("freeing commctx"); + isc_mempool_destroy(&commctx); + } if (socketmgr != NULL) { debug("freeing socketmgr"); isc_socketmgr_destroy(&socketmgr);