summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDukePyrolator <DukePyrolator@anope.org>2012-10-24 05:12:47 +0200
committerDukePyrolator <DukePyrolator@anope.org>2012-10-24 05:12:47 +0200
commitef5c6684c71fda6837f4d217d4f61bb418523047 (patch)
tree599dffcd828fc4a4213a7a2d2b17a449ed3c6e77 /src
parente0438e3a7ee3b7737f5138e7f43157b07479c824 (diff)
parent04632bd381796dd90742bbc6ccd38905d4de25be (diff)
Merge branch '1.9' of ssh://anope.git.sourceforge.net/gitroot/anope/anope into 1.9
Diffstat (limited to 'src')
-rw-r--r--src/config.cpp3
-rw-r--r--src/dns.cpp11
-rw-r--r--src/nickcore.cpp2
-rw-r--r--src/regchannel.cpp2
4 files changed, 12 insertions, 6 deletions
diff --git a/src/config.cpp b/src/config.cpp
index 6347754fb..6dc19e83a 100644
--- a/src/config.cpp
+++ b/src/config.cpp
@@ -210,7 +210,7 @@ ServerConfig::ServerConfig() : config_data(), NSDefFlags(NickCoreFlagStrings), C
}
if (DNSEngine)
DNSEngine->SetFlag(SF_DEAD);
- DNSEngine = new DNSManager(this->NameServer, this->DNSPort);
+ DNSEngine = new DNSManager(this->NameServer, this->DNSIP, this->DNSPort);
if (this->CaseMap == "ascii")
Anope::casemap = std::locale(std::locale(), new Anope::ascii_ctype<char>());
@@ -1302,6 +1302,7 @@ ConfigItems::ConfigItems(ServerConfig *conf)
{"mail", "memo_message", "", new ValueContainerString(&conf->MailMemoMessage), DT_STRING | DT_ALLOW_NEWLINE, ValidateMail},
{"dns", "nameserver", "127.0.0.1", new ValueContainerString(&conf->NameServer), DT_STRING, NoValidation},
{"dns", "timeout", "5", new ValueContainerTime(&conf->DNSTimeout), DT_TIME, NoValidation},
+ {"dns", "ip", "0.0.0.0", new ValueContainerString(&conf->DNSIP), DT_STRING, NoValidation},
{"dns", "port", "53", new ValueContainerInt(&conf->DNSPort), DT_INTEGER, NoValidation},
{"chanserv", "name", "", new ValueContainerString(&conf->ChanServ), DT_STRING, NoValidation},
{"chanserv", "defaults", "keeptopic secure securefounder signkick", new ValueContainerString(&CSDefaults), DT_STRING, ValidateChanServ},
diff --git a/src/dns.cpp b/src/dns.cpp
index 519e02b8f..7c62b594a 100644
--- a/src/dns.cpp
+++ b/src/dns.cpp
@@ -462,12 +462,12 @@ unsigned short DNSPacket::Pack(unsigned char *output, unsigned short output_size
return pos;
}
-DNSManager::DNSManager(const Anope::string &nameserver, int port) : Timer(300, Anope::CurTime, true), Socket(-1, nameserver.find(':') != Anope::string::npos, SOCK_DGRAM)
+DNSManager::DNSManager(const Anope::string &nameserver, const Anope::string &ip, int port) : Timer(300, Anope::CurTime, true), Socket(-1, nameserver.find(':') != Anope::string::npos, SOCK_DGRAM)
{
this->addrs.pton(this->IPv6 ? AF_INET6 : AF_INET, nameserver, port);
try
{
- this->Bind("0.0.0.0", port);
+ this->Bind(ip, port);
}
catch (const SocketException &ex)
{
@@ -525,7 +525,12 @@ bool DNSManager::ProcessRead()
if (!(recv_packet.flags & DNS_QUERYFLAGS_QR))
{
- FOREACH_MOD(I_OnDnsRequest, OnDnsRequest(recv_packet));
+ DNSPacket *packet = new DNSPacket(recv_packet);
+ packet->flags |= DNS_QUERYFLAGS_QR; /* This is a reponse */
+
+ FOREACH_MOD(I_OnDnsRequest, OnDnsRequest(recv_packet, packet));
+
+ DNSEngine->SendPacket(packet);
return true;
}
diff --git a/src/nickcore.cpp b/src/nickcore.cpp
index 5d9950a4e..71d117de1 100644
--- a/src/nickcore.cpp
+++ b/src/nickcore.cpp
@@ -19,7 +19,7 @@ serialize_checker<nickcore_map> NickCoreList("NickCore");
/** Default constructor
* @param display The display nick
*/
-NickCore::NickCore(const Anope::string &coredisplay) : Serializable("NickCore"), Flags<NickCoreFlag, NI_END>(NickCoreFlagStrings)
+NickCore::NickCore(const Anope::string &coredisplay) : Serializable("NickCore"), Flags<NickCoreFlag, NI_END>(NickCoreFlagStrings)
{
if (coredisplay.empty())
throw CoreException("Empty display passed to NickCore constructor");
diff --git a/src/regchannel.cpp b/src/regchannel.cpp
index e7bea1c83..f402b5820 100644
--- a/src/regchannel.cpp
+++ b/src/regchannel.cpp
@@ -274,7 +274,7 @@ ChannelInfo::ChannelInfo(const Anope::string &chname) : Serializable("ChannelInf
/** Copy constructor
* @param ci The ChannelInfo to copy settings to
*/
-ChannelInfo::ChannelInfo(const ChannelInfo &ci) : Flags<ChannelInfoFlag, CI_END>(ChannelInfoFlagStrings), Serializable("ChannelInfo"),
+ChannelInfo::ChannelInfo(const ChannelInfo &ci) : Serializable("ChannelInfo"), Flags<ChannelInfoFlag, CI_END>(ChannelInfoFlagStrings),
access("ChanAccess"), akick("AutoKick"),
badwords("BadWord"), mode_locks("ModeLock"), log_settings("LogSetting"), botflags(BotServFlagStrings)
{