/*
- * $Id: dns_internal.cc,v 1.5 1999/04/18 05:30:56 wessels Exp $
+ * $Id: dns_internal.cc,v 1.6 1999/04/18 05:44:55 wessels Exp $
*
* DEBUG: section 78 DNS lookups; interacts with lib/rfc1035.c
* AUTHOR: Duane Wessels
#define DOMAIN_PORT 53
#endif
+#define IDNS_MAX_TRIES 20
+
typedef struct _ns ns;
struct _ns {
struct sockaddr_in S;
debug(78, 1) ("idnsCheckQueue: ID %#04x timeout\n",
q->id);
dlinkDelete(&q->lru, &lru_list);
- idnsSendQuery(q);
+ if (q->nsends < IDNS_MAX_TRIES) {
+ idnsSendQuery(q);
+ } else {
+ int v = cbdataValid(q->callback_data);
+ debug(78, 1) ("idnsCheckQueue: ID %x: giving up after %d tries\n",
+ q->nsends);
+ cbdataUnlock(q->callback_data);
+ if (v)
+ q->callback(q->callback_data, NULL, 0);
+ memFree(q, MEM_IDNS_QUERY);
+ }
}
}