std::vector<std::string> getRawLabels() const; //!< Individual raw unescaped labels
bool chopOff(); //!< Turn www.powerdns.com. into powerdns.com., returns false for .
DNSName makeRelative(const DNSName& zone) const;
+ DNSName makeLowerCase() const
+ {
+ DNSName ret;
+ ret.d_storage = d_storage;
+ for(auto & c : ret.d_storage) {
+ c=dns2_tolower(c);
+ }
+ return ret;
+ }
void makeUsRelative(const DNSName& zone);
DNSName labelReverse() const;
bool isWildcard() const;
vector<shared_ptr<DNSRecordContent> > toSign;
vector<DNSResourceRecord> signedRecords;
-
+ signedRecords.reserve(rrs.size()*1.5);
+ // cout<<rrs.size()<<", "<<sizeof(DNSResourceRecord)<<endl;
DNSName signer;
for(vector<DNSResourceRecord>::const_iterator pos = rrs.begin(); pos != rrs.end(); ++pos) {
if(pos != rrs.begin() && (signQType != pos->qtype.getCode() || signQName != pos->qname)) {
addSignature(dk, db, signer, signQName, wildcardQName, signQType, signTTL, signPlace, toSign, signedRecords, origTTL);
}
signedRecords.push_back(*pos);
- signQName= DNSName(toLower(pos->qname.toString()));
+ signQName= pos->qname.makeLowerCase();
if(!pos->wildcardname.empty())
- wildcardQName = DNSName(toLower(pos->wildcardname.toString()));
+ wildcardQName = pos->wildcardname.makeLowerCase();
else
wildcardQName.clear();
signQType = pos ->qtype.getCode();
BOOST_CHECK(!a.canonCompare(b));
}
+BOOST_AUTO_TEST_CASE(test_casing) {
+ DNSName a("WwW.PoWeRdNS.Com"), b("www.powerdns.com.");
+ BOOST_CHECK_EQUAL(a,b);
+ BOOST_CHECK_EQUAL(a.toString(), "WwW.PoWeRdNS.Com.");
+ DNSName c=a.makeLowerCase();
+ BOOST_CHECK_EQUAL(a,c);
+ BOOST_CHECK_EQUAL(b,c);
+ BOOST_CHECK_EQUAL(c.toString(), b.toString());
+ BOOST_CHECK_EQUAL(c.toString(), "www.powerdns.com.");
+}
+
+
BOOST_AUTO_TEST_CASE(test_compare_canonical) {
DNSName lower("bert.com."), higher("alpha.nl.");