Changeset 1636 for trunk/pdns/pdns/pdns_recursor.cc
- Timestamp:
- 06/13/10 23:10:32 (3 years ago)
- Files:
-
- 1 modified
-
trunk/pdns/pdns/pdns_recursor.cc (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/pdns/pdns/pdns_recursor.cc
r1630 r1636 512 512 int res; 513 513 514 if(!t_pdl->get() || !(*t_pdl)->preresolve(dc->d_remote, g_listenSocketsAddresses[dc->d_socket], dc->d_mdp.d_qname, QType(dc->d_mdp.d_qtype), ret, res)) { 514 bool variableAnswer = false; 515 if(!t_pdl->get() || !(*t_pdl)->preresolve(dc->d_remote, g_listenSocketsAddresses[dc->d_socket], dc->d_mdp.d_qname, QType(dc->d_mdp.d_qtype), ret, res, &variableAnswer)) { 515 516 res = sr.beginResolve(dc->d_mdp.d_qname, QType(dc->d_mdp.d_qtype), dc->d_mdp.d_qclass, ret); 516 517 517 518 if(t_pdl->get()) { 518 519 if(res == RCode::NXDomain) 519 (*t_pdl)->nxdomain(dc->d_remote, g_listenSocketsAddresses[dc->d_socket], dc->d_mdp.d_qname, QType(dc->d_mdp.d_qtype), ret, res );520 (*t_pdl)->nxdomain(dc->d_remote, g_listenSocketsAddresses[dc->d_socket], dc->d_mdp.d_qname, QType(dc->d_mdp.d_qtype), ret, res, &variableAnswer); 520 521 } 521 522 } 523 522 524 uint32_t minTTL=numeric_limits<uint32_t>::max(); 523 525 if(res<0) { … … 558 560 if(!dc->d_tcp) { 559 561 sendto(dc->d_socket, (const char*)&*packet.begin(), packet.size(), 0, (struct sockaddr *)(&dc->d_remote), dc->d_remote.getSocklen()); 560 if(!SyncRes::s_nopacketcache ) {562 if(!SyncRes::s_nopacketcache && !variableAnswer ) { 561 563 t_packetCache->insertResponsePacket(string((const char*)&*packet.begin(), packet.size()), g_now.tv_sec, 562 564 min(minTTL, 563 pw.getHeader()->rcode == RCode::ServFail? SyncRes::s_packetcacheservfailttl : SyncRes::s_packetcachettl564 ) 565 (pw.getHeader()->rcode == RCode::ServFail) ? SyncRes::s_packetcacheservfailttl : SyncRes::s_packetcachettl 566 ) 565 567 ); 566 568 } … … 1413 1415 g_stats.unexpectedCount++; // if we made it here, it really is an unexpected answer 1414 1416 if(g_logCommonErrors) 1415 L<<Logger::Warning<<"Discarding unexpected packet from "<<fromaddr.toString ()<<": "<<pident.domain<<", "<<pident.type<<endl;1417 L<<Logger::Warning<<"Discarding unexpected packet from "<<fromaddr.toStringWithPort()<<": "<<pident.domain<<", "<<pident.type<<endl; 1416 1418 } 1417 1419 else if(fd >= 0) {