* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: dighost.c,v 1.221.2.19.2.35 2006/10/02 03:14:24 marka Exp $ */
+/* $Id: dighost.c,v 1.221.2.19.2.36 2006/12/07 01:26:33 marka Exp $ */
/*
* Notice to programmers: Do not use this code as an example of how to
fatal("memory allocation failure in %s:%d",
__FILE__, __LINE__);
looknew->pending = ISC_TRUE;
- looknew->waiting_senddone = ISC_FALSE;
- looknew->pending_clear = ISC_FALSE;
looknew->textname[0] = 0;
looknew->cmdline[0] = 0;
looknew->rdtype = dns_rdatatype_a;
isc_mempool_put(commctx, query->recvspace);
isc_buffer_invalidate(&query->recvbuf);
isc_buffer_invalidate(&query->lengthbuf);
- if (lookup->waiting_senddone)
+ if (query->waiting_senddone)
query->pending_free = ISC_TRUE;
else
isc_mem_free(mctx, query);
return (ISC_FALSE);
}
- if (lookup->waiting_senddone) {
- lookup->pending_clear = ISC_TRUE;
- return (ISC_TRUE);
- }
-
/*
* At this point, we know there are no queries on the lookup,
* so can make it go away also.
check_result(result, "dns_compress_init");
debug("starting to render the message");
- isc_buffer_init(&lookup->sendbuf, lookup->sendspace, COMMSIZE);
+ isc_buffer_init(&lookup->renderbuf, lookup->sendspace, COMMSIZE);
result = dns_message_renderbegin(lookup->sendmsg, &cctx,
- &lookup->sendbuf);
+ &lookup->renderbuf);
check_result(result, "dns_message_renderbegin");
if (lookup->udpsize > 0 || lookup->dnssec) {
if (lookup->udpsize == 0)
/*
* Force TCP mode if the request is larger than 512 bytes.
*/
- if (isc_buffer_usedlength(&lookup->sendbuf) > 512)
+ if (isc_buffer_usedlength(&lookup->renderbuf) > 512)
lookup->tcp_mode = ISC_TRUE;
lookup->pending = ISC_FALSE;
query, lookup);
query->lookup = lookup;
query->waiting_connect = ISC_FALSE;
+ query->waiting_senddone = ISC_FALSE;
query->pending_free = ISC_FALSE;
query->recv_made = ISC_FALSE;
query->first_pass = ISC_TRUE;
isc_buffer_init(&query->recvbuf, query->recvspace, COMMSIZE);
isc_buffer_init(&query->lengthbuf, query->lengthspace, 2);
isc_buffer_init(&query->slbuf, query->slspace, 2);
+ query->sendbuf = lookup->renderbuf;
ISC_LINK_INIT(query, link);
ISC_LIST_ENQUEUE(lookup->q, query, link);
ISC_LIST_DEQUEUE(sevent->bufferlist, b, link);
query = event->ev_arg;
+ query->waiting_senddone = ISC_FALSE;
l = query->lookup;
- l->waiting_senddone = ISC_FALSE;
if (l->ns_search_only && !l->trace_root) {
debug("sending next, since searching");
if (query->pending_free)
isc_mem_free(mctx, query);
- if (l->pending_clear)
- try_clear_lookup(l);
check_if_done();
UNLOCK_LOOKUP;
debug("recvcount=%d", recvcount);
}
ISC_LIST_INIT(query->sendlist);
- ISC_LINK_INIT(&l->sendbuf, link);
- ISC_LIST_ENQUEUE(query->sendlist, &l->sendbuf,
- link);
+ ISC_LIST_ENQUEUE(query->sendlist, &query->sendbuf, link);
debug("sending a request");
TIME_NOW(&query->time_sent);
INSIST(query->sock != NULL);
- l->waiting_senddone = ISC_TRUE;
+ query->waiting_senddone = ISC_TRUE;
result = isc_socket_sendtov(query->sock, &query->sendlist,
global_task, send_done, query,
&query->sockaddr, NULL);
isc_buffer_clear(&query->slbuf);
isc_buffer_clear(&query->lengthbuf);
- isc_buffer_putuint16(&query->slbuf,
- (isc_uint16_t) query->lookup->sendbuf.used);
+ isc_buffer_putuint16(&query->slbuf, (isc_uint16_t) query->sendbuf.used);
ISC_LIST_INIT(query->sendlist);
ISC_LINK_INIT(&query->slbuf, link);
ISC_LIST_ENQUEUE(query->sendlist, &query->slbuf, link);
- if (include_question) {
- ISC_LINK_INIT(&query->lookup->sendbuf, link);
- ISC_LIST_ENQUEUE(query->sendlist, &query->lookup->sendbuf,
- link);
- }
+ if (include_question)
+ ISC_LIST_ENQUEUE(query->sendlist, &query->sendbuf, link);
ISC_LINK_INIT(&query->lengthbuf, link);
ISC_LIST_ENQUEUE(query->lengthlist, &query->lengthbuf, link);
if (!query->first_soa_rcvd) {
debug("sending a request in launch_next_query");
TIME_NOW(&query->time_sent);
- query->lookup->waiting_senddone = ISC_TRUE;
+ query->waiting_senddone = ISC_TRUE;
result = isc_socket_sendv(query->sock, &query->sendlist,
global_task, send_done, query);
check_result(result, "isc_socket_sendv");