/*
- * $Id: dns_internal.cc,v 1.91 2006/08/07 02:28:22 robertc Exp $
+ * $Id: dns_internal.cc,v 1.92 2006/08/25 12:42:57 serassio Exp $
*
* DEBUG: section 78 DNS lookups; interacts with lib/rfc1035.c
* AUTHOR: Duane Wessels
struct sockaddr_in S;
int nqueries;
int nreplies;
- int large_pkts;
nsvc *vc;
};
};
CBDATA_TYPE(nsvc);
+CBDATA_TYPE(idns_query);
static ns *nameservers = NULL;
static sp *searchpath = NULL;
static void idnsCacheQuery(idns_query * q);
static void idnsSendQuery(idns_query * q);
static IOCB idnsReadVCHeader;
+static void idnsDoSendQueryVC(nsvc *vc);
static int idnsFromKnownNameserver(struct sockaddr_in *from);
static idns_query *idnsFindQuery(unsigned short id);
event_queued = 1;
}
-static void idnsDoSendQueryVC(nsvc *vc);
-
static void
idnsSentQueryVC(int fd, char *buf, size_t size, comm_err_t flag, void *data)
{
nsvc * vc = (nsvc *)data;
delete vc->queue;
delete vc->msg;
- // XXX need to free and/or cbdataReferenceDone(vc) ?
nameservers[vc->ns].vc = NULL;
+ cbdataFree(vc);
}
static void
addr,
0,
COMM_NONBLOCKING,
- "DNS Socket");
+ "DNS TCP Socket");
if (vc->fd < 0)
fatal("Could not create a DNS socket");
if (cbdataReferenceValidDone(q2->callback_data, &cbdata))
callback(cbdata, answers, n, error);
- memFree(q2, MEM_IDNS_QUERY);
+ cbdataFree(q2);
}
if (q->hash.key) {
idnsCallback(q, message->answer, n, q->error);
rfc1035MessageDestroy(message);
- memFree(q, MEM_IDNS_QUERY);
+ cbdataFree(q);
}
static void
else
idnsCallback(q, NULL, -16, "Timeout");
- memFree(q, MEM_IDNS_QUERY);
+ cbdataFree(q);
}
}
static int init = 0;
CBDATA_INIT_TYPE(nsvc);
+ CBDATA_INIT_TYPE(idns_query);
if (DnsSocket < 0) {
int port;
if (!old)
return 0;
- q = (idns_query *)memAllocate(MEM_IDNS_QUERY);
+ q = cbdataAlloc(idns_query);
q->callback = callback;
if (idnsCachedLookup(name, callback, data))
return;
- q = (idns_query *)memAllocate(MEM_IDNS_QUERY);
+ q = cbdataAlloc(idns_query);
q->id = idnsQueryID();
if (q->sz < 0) {
/* problem with query data -- query not sent */
callback(data, NULL, 0, "Internal error");
- memFree(q, MEM_IDNS_QUERY);
+ cbdataFree(q);
return;
}
if (idnsCachedLookup(ip, callback, data))
return;
- q = (idns_query *)memAllocate(MEM_IDNS_QUERY);
+ q = cbdataAlloc(idns_query);
q->id = idnsQueryID();
{
/* problem with query data -- query not sent */
callback(data, NULL, 0, "Internal error");
- memFree(q, MEM_IDNS_QUERY);
+ cbdataFree(q);
return;
}