// ensure it's readable file
if (stat(namebuf.str().c_str(), &st) || !S_ISREG(st.st_mode)) {
L << Logger::Error << namebuf.str() << " is not a file" << std::endl;
+ closedir(dir);
throw ArgException(namebuf.str() + " does not exist!");
}
extraConfigs.push_back(namebuf.str());
bits++;
}
if (node) {
- for(auto it = _nodes.begin(); it != _nodes.end(); it++)
- if (node->node4.get() == *it) _nodes.erase(it);
+ for(auto it = _nodes.begin(); it != _nodes.end(); ) {
+ if (node->node4.get() == *it)
+ it = _nodes.erase(it);
+ else
+ it++;
+ }
node->node4.reset();
}
} else {
bits++;
}
if (node) {
- for(auto it = _nodes.begin(); it != _nodes.end(); it++)
- if (node->node6.get() == *it) _nodes.erase(it);
+ for(auto it = _nodes.begin(); it != _nodes.end(); ) {
+ if (node->node6.get() == *it)
+ it = _nodes.erase(it);
+ else
+ it++;
+ }
+
node->node6.reset();
}
}
{
char buffer[1500];
struct NotificationInFlight nif;
+ /* make sure we report enough room for IPv6 */
+ nif.source.sin4.sin_family = AF_INET6;
nif.origSocket = fd;
- socklen_t socklen=sizeof(nif.source);
+ socklen_t socklen=nif.source.getSocklen();
int res=recvfrom(fd, buffer, sizeof(buffer), 0, (struct sockaddr*)&nif.source, &socklen);
if(!res)
{
char buffer[1500];
struct NotificationInFlight nif;
+ /* make sure we report enough room for IPv6 */
+ nif.source.sin4.sin_family = AF_INET6;
- socklen_t socklen=sizeof(nif.source);
+ socklen_t socklen=nif.source.getSocklen();
int len=recvfrom(fd, buffer, sizeof(buffer), 0, (struct sockaddr*)&nif.source, &socklen);
if(!len)
if(g_logCommonErrors)
L<<Logger::Error<<"PIPE function we executed created PDNS exception: "<<e.reason<<endl; // but what if they wanted an answer.. we send 0
}
- if(tmsg->wantAnswer)
- if(write(g_pipes[t_id].writeFromThread, &resp, sizeof(resp)) != sizeof(resp))
+ if(tmsg->wantAnswer) {
+ if(write(g_pipes[t_id].writeFromThread, &resp, sizeof(resp)) != sizeof(resp)) {
+ delete tmsg;
unixDie("write to thread pipe returned wrong size or error");
+ }
+ }
delete tmsg;
}
}
-QType::QType(uint16_t n)
+QType::QType(uint16_t n): QType()
{
- QType();
code=n;
}