From: bert hubert Date: Sat, 24 Oct 2015 07:56:23 +0000 (+0200) Subject: massively speed up DNSRecord operator<, also changing its semantics. We don't order... X-Git-Tag: dnsdist-1.0.0-alpha1~252^2~6^2~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2caf46713fd3373eeb249cf73abd5e20ea335b5f;p=thirdparty%2Fpdns.git massively speed up DNSRecord operator<, also changing its semantics. We don't order in DNSName canonical order now, but perhaps we should. --- diff --git a/pdns/dnsparser.hh b/pdns/dnsparser.hh index fa66649589..936ca10057 100644 --- a/pdns/dnsparser.hh +++ b/pdns/dnsparser.hh @@ -277,19 +277,19 @@ struct DNSRecord bool operator<(const DNSRecord& rhs) const { + if(tie(d_name, d_type, d_class) < tie(rhs.d_name, rhs.d_type, rhs.d_class)) + return true; + + if(tie(d_name, d_type, d_class) != tie(rhs.d_name, rhs.d_type, rhs.d_class)) + return false; + string lzrp, rzrp; if(d_content) lzrp=toLower(d_content->getZoneRepresentation()); if(rhs.d_content) rzrp=toLower(rhs.d_content->getZoneRepresentation()); - string llabel=toLower(d_name.toString()); - string rlabel=toLower(rhs.d_name.toString()); - - // XXX is anyone expecting a specific canonical ordering? can we use DNSName builtin < ? - return - tie(llabel, d_type, d_class, lzrp) < - tie(rlabel, rhs.d_type, rhs.d_class, rzrp); + return lzrp < rzrp; } bool operator==(const DNSRecord& rhs) const