/*
- * $Id: rfc1035.h,v 1.15 2005/05/10 10:39:56 hno Exp $
+ * $Id: rfc1035.h,v 1.16 2005/10/23 14:10:45 serassio Exp $
*
* AUTHOR: Duane Wessels
*
SQUIDCEXTERN const char *rfc1035_error_message;
#define RFC1035_TYPE_A 1
+#define RFC1035_TYPE_CNAME 5
#define RFC1035_TYPE_PTR 12
#define RFC1035_CLASS_IN 1
/*
- * $Id: fqdncache.cc,v 1.164 2005/04/18 21:52:42 hno Exp $
+ * $Id: fqdncache.cc,v 1.165 2005/10/23 14:10:45 serassio Exp $
*
* DEBUG: section 35 FQDN Cache
* AUTHOR: Harvest Derived
assert(answers);
for (k = 0; k < nr; k++) {
- if (answers[k].type != RFC1035_TYPE_PTR)
- continue;
-
if (answers[k]._class != RFC1035_CLASS_IN)
continue;
- if (!answers[k].rdata[0])
- continue;
+ if (answers[k].type == RFC1035_TYPE_PTR) {
+ if (!answers[k].rdata[0]) {
+ debug(35, 2) ("fqdncacheParse: blank PTR record for '%s'\n", name);
+ continue;
+ }
- f->names[f->name_count++] = xstrdup(answers[k].rdata);
+ if (strchr(answers[k].rdata, ' ')) {
+ debug(35, 2) ("fqdncacheParse: invalid PTR record '%s' for '%s'\n", answers[k].rdata, name);
+ continue;
+ }
+
+ f->names[f->name_count++] = xstrdup(answers[k].rdata);
+ } else if (answers[k].type != RFC1035_TYPE_CNAME)
+ continue;
if (ttl == 0 || (int) answers[k].ttl < ttl)
ttl = answers[k].ttl;
}
if (f->name_count == 0) {
- debug(35, 1) ("fqdncacheParse: No PTR record\n");
- f->error_message = xstrdup("No PTR record");
+ debug(35, 1) ("fqdncacheParse: No PTR record for '%s'\n", name);
return 0;
}
/*
- * $Id: ipcache.cc,v 1.251 2005/04/18 21:52:42 hno Exp $
+ * $Id: ipcache.cc,v 1.252 2005/10/23 14:10:45 serassio Exp $
*
* DEBUG: section 14 IP Cache
* AUTHOR: Harvest Derived
i->addrs.bad_mask = (unsigned char *)xcalloc(na, sizeof(unsigned char));
for (j = 0, k = 0; k < nr; k++) {
- if (answers[k].type != RFC1035_TYPE_A)
- continue;
-
if (answers[k]._class != RFC1035_CLASS_IN)
continue;
- if (answers[k].rdlength != 4)
+ if (answers[k].type == RFC1035_TYPE_A) {
+ if (answers[k].rdlength != 4)
+ continue;
+
+ xmemcpy(&i->addrs.in_addrs[j++], answers[k].rdata, 4);
+
+ debug(14, 3) ("ipcacheParse: #%d %s\n",
+ j - 1,
+ inet_ntoa(i->addrs.in_addrs[j - 1]));
+ } else if (answers[k].type != RFC1035_TYPE_CNAME)
continue;
if (ttl == 0 || (int) answers[k].ttl < ttl)
ttl = answers[k].ttl;
- xmemcpy(&i->addrs.in_addrs[j++], answers[k].rdata, 4);
-
- debug(14, 3) ("ipcacheParse: #%d %s\n",
- j - 1,
- inet_ntoa(i->addrs.in_addrs[j - 1]));
}
assert(j == na);