* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: dighost.c,v 1.221.2.19.2.33 2006/06/07 00:29:44 marka Exp $ */
+/* $Id: dighost.c,v 1.221.2.19.2.34 2006/08/01 00:54:20 marka Exp $ */
/*
* Notice to programmers: Do not use this code as an example of how to
static void
recv_done(isc_task_t *task, isc_event_t *event);
+static void
+send_udp(dig_query_t *query);
+
static void
connect_timeout(isc_task_t *task, isc_event_t *event);
send_done(isc_task_t *_task, isc_event_t *event) {
isc_socketevent_t *sevent = (isc_socketevent_t *)event;
isc_buffer_t *b = NULL;
+ dig_query_t *query, *next;
+ dig_lookup_t *l;
REQUIRE(event->ev_type == ISC_SOCKEVENT_SENDDONE);
LOCK_LOOKUP;
+ debug("send_done()");
+ sendcount--;
+ debug("sendcount=%d", sendcount);
+ INSIST(sendcount >= 0);
+
for (b = ISC_LIST_HEAD(sevent->bufferlist);
b != NULL;
b = ISC_LIST_HEAD(sevent->bufferlist))
ISC_LIST_DEQUEUE(sevent->bufferlist, b, link);
+ query = event->ev_arg;
+ l = query->lookup;
+
+ if (l->ns_search_only && !l->trace_root) {
+ debug("sending next, since searching");
+ next = ISC_LIST_NEXT(query, link);
+ if (next != NULL)
+ send_udp(next);
+ }
+
isc_event_free(&event);
- debug("send_done()");
- sendcount--;
- debug("sendcount=%d", sendcount);
- INSIST(sendcount >= 0);
check_if_done();
UNLOCK_LOOKUP;
}
static void
send_udp(dig_query_t *query) {
dig_lookup_t *l = NULL;
- dig_query_t *next;
isc_result_t result;
debug("send_udp(%p)", query);
&query->sockaddr, NULL);
check_result(result, "isc_socket_sendtov");
sendcount++;
- /*
- * If we're at the endgame of a nameserver search, we need to
- * immediately bring up all the queries. Do it here.
- */
- if (l->ns_search_only && !l->trace_root) {
- debug("sending next, since searching");
- next = ISC_LIST_NEXT(query, link);
- if (next != NULL)
- send_udp(next);
- }
}
/*