int result=0;
unsigned int n;
for(n = 0; n < aLabelLen && n < bLabelLen; ++n)
- if((result = aSafe[aPos + n] - bSafe[bPos +n])) // XXX this should perhaps be dns_tolower
+ if((result = dns_tolower(aSafe[aPos + n]) - dns_tolower(bSafe[bPos +n])))
break;
// cerr<<"Done loop, result="<<result<<", n = "<<n<<", aLabelLen="<<aLabelLen<<", bLabelLen="<<bLabelLen<<endl;
if(result < 0)
memcpy(&id, queryPacket.c_str(), 2);
*responsePacket = iter->d_packet;
responsePacket->replace(0, 2, (char*)&id, 2);
+
+ string::size_type i=sizeof(dnsheader);
+
+ for(;;) {
+ int labellen = (unsigned char)queryPacket[i];
+ if(!labellen || i + labellen > responsePacket->size()) break;
+ i++;
+ responsePacket->replace(i, labellen, queryPacket, i, labellen);
+ i = i + labellen;
+ }
+
d_hits++;
moveCacheItemToBack(d_packetCache, iter);