#include "namespaces.hh"
#include "statbag.hh"
#include <stdint.h>
-#ifndef PACKAGEVERSION
+#ifndef PACKAGEVERSION
#define PACKAGEVERSION getPDNSVersion()
#endif
vector<string> parts;
stringtok(parts, line, " \t,"); // be REALLY nice
for(vector<string>::const_iterator iter = parts.begin()+1; iter != parts.end(); ++iter) {
-
- try {
- s_servers.push_back(ComboAddress(*iter, 53));
- }
- catch(...)
- {
- }
+ try {
+ s_secpollresolvers.push_back(ComboAddress(*iter, 53));
+ }
+ catch(...)
+ {
+ }
}
}
-
}
// Last resort, add 127.0.0.1
if(s_secpollresolvers.empty()) {
}
}
-int doResolve(const string& qname, uint16_t qtype, vector<DNSResourceRecord>& ret)
+int doResolve(const string& qname, uint16_t qtype, vector<DNSResourceRecord>& ret)
{
vector<uint8_t> packet;
Socket sock(dest.sin4.sin_family, SOCK_DGRAM);
sock.setNonBlocking();
sock.sendTo(string((char*)&*packet.begin(), (char*)&*packet.end()), dest);
-
+
string reply;
waitForData(sock.getHandle(), 2, 0);
retry:
sock.recvFrom(reply, dest);
if(reply.size() > sizeof(struct dnsheader)) {
- struct dnsheader d;
- memcpy(&d, reply.c_str(), sizeof(d));
- if(d.id != pw.getHeader()->id)
- goto retry;
+ struct dnsheader d;
+ memcpy(&d, reply.c_str(), sizeof(d));
+ if(d.id != pw.getHeader()->id)
+ goto retry;
}
}
catch(...) {
}
MOADNSParser mdp(reply);
if(mdp.d_header.rcode == RCode::ServFail)
- continue;
-
+ continue;
- for(MOADNSParser::answers_t::const_iterator i=mdp.d_answers.begin(); i!=mdp.d_answers.end(); ++i) {
+
+ for(MOADNSParser::answers_t::const_iterator i=mdp.d_answers.begin(); i!=mdp.d_answers.end(); ++i) {
if(i->first.d_place == 1 && i->first.d_type==QType::TXT) {
- DNSResourceRecord rr;
- rr.qname = i->first.d_label;
- rr.qtype = QType(i->first.d_type);
- rr.content = i->first.d_content->getZoneRepresentation();
- rr.ttl=i->first.d_ttl;
- ret.push_back(rr);
+ DNSResourceRecord rr;
+ rr.qname = i->first.d_label;
+ rr.qtype = QType(i->first.d_type);
+ rr.content = i->first.d_content->getZoneRepresentation();
+ rr.ttl=i->first.d_ttl;
+ ret.push_back(rr);
}
}
L<<Logger::Debug<<"Secpoll got answered by "<<dest.toString()<<endl;
if(!content.empty() && content[0]=='"' && content[content.size()-1]=='"') {
content=content.substr(1, content.length()-2);
}
-
+
pair<string, string> split = splitField(content, ' ');
-
+
security_status = atoi(split.first.c_str());
g_security_message = split.second;