static void flush_lookup_list (void) { dig_lookup_t *l, *lp; dig_query_t *q, *qp; dig_server_t *s, *sp; lookup_counter = 0; l = ISC_LIST_HEAD (lookup_list); while (l != NULL) { q = ISC_LIST_HEAD (l->q); while (q != NULL) { if (q->sock != NULL) { isc_socket_cancel (q->sock, NULL, ISC_SOCKCANCEL_ALL); isc_socket_detach (&q->sock); } if (ISC_LINK_LINKED (&q->recvbuf, link)) ISC_LIST_DEQUEUE (q->recvlist, &q->recvbuf, link); if (ISC_LINK_LINKED (&q->lengthbuf, link)) ISC_LIST_DEQUEUE (q->lengthlist, &q->lengthbuf, link); isc_buffer_invalidate (&q->recvbuf); isc_buffer_invalidate (&q->lengthbuf); qp = q; q = ISC_LIST_NEXT (q, link); ISC_LIST_DEQUEUE (l->q, qp, link); isc_mem_free (mctx, qp); } s = ISC_LIST_HEAD (l->my_server_list); while (s != NULL) { sp = s; s = ISC_LIST_NEXT (s, link); ISC_LIST_DEQUEUE (l->my_server_list, sp, link); isc_mem_free (mctx, sp); } if (l->sendmsg != NULL) dns_message_destroy (&l->sendmsg); if (l->timer != NULL) isc_timer_detach (&l->timer); lp = l; l = ISC_LIST_NEXT (l, link); ISC_LIST_DEQUEUE (lookup_list, lp, link); isc_mem_free (mctx, lp); } }
isc_result_t dhcp_isc_name(unsigned char *namestr, dns_fixedname_t *namefix, dns_name_t **name) { size_t namelen; isc_buffer_t b; isc_result_t result; namelen = strlen((char *)namestr); isc_buffer_init(&b, namestr, namelen); isc_buffer_add(&b, namelen); dns_fixedname_init(namefix); *name = dns_fixedname_name(namefix); result = dns_name_fromtext(*name, &b, dns_rootname, 0, NULL); isc_buffer_invalidate(&b); return(result); }
static void parse_name(char **cmdlinep, dns_name_t *name) { isc_result_t result; char *word; isc_buffer_t source; word = nsu_strsep(cmdlinep, " \t\r\n"); if (word == NULL || *word == 0) { fprintf(stderr, "could not read owner name\n"); exit(1); } isc_buffer_init(&source, word, strlen(word)); isc_buffer_add(&source, strlen(word)); result = dns_name_fromtext(name, &source, dns_rootname, 0, NULL); check_result(result, "dns_name_fromtext"); isc_buffer_invalidate(&source); }
void isc_buffer_free(isc_buffer_t **dynbuffer) { isc_buffer_t *dbuf; isc_mem_t *mctx; REQUIRE(dynbuffer != NULL); REQUIRE(ISC_BUFFER_VALID(*dynbuffer)); REQUIRE((*dynbuffer)->mctx != NULL); dbuf = *dynbuffer; *dynbuffer = NULL; /* destroy external reference */ mctx = dbuf->mctx; dbuf->mctx = NULL; isc_mem_put(mctx, dbuf->base, dbuf->length); isc_buffer_invalidate(dbuf); isc_mem_put(mctx, dbuf, sizeof(isc_buffer_t)); }
static void reset_client(isc_httpd_t *httpd) { /* * Catch errors here. We MUST be in RECV mode, and we MUST NOT have * any outstanding buffers. If we have buffers, we have a leak. */ INSIST(ISC_HTTPD_ISRECV(httpd)); INSIST(!ISC_LINK_LINKED(&httpd->headerbuffer, link)); INSIST(!ISC_LINK_LINKED(&httpd->bodybuffer, link)); httpd->recvbuf[0] = 0; httpd->recvlen = 0; httpd->headers = NULL; httpd->method = ISC_HTTPD_METHODUNKNOWN; httpd->url = NULL; httpd->querystring = NULL; httpd->protocol = NULL; httpd->flags = 0; isc_buffer_clear(&httpd->headerbuffer); isc_buffer_invalidate(&httpd->bodybuffer); }