]> granicus.if.org Git - pdns/commitdiff
Be smarter about trimming whitespace when creating records from ASCII
authorbert hubert <bert.hubert@netherlabs.nl>
Wed, 23 Jan 2019 20:03:21 +0000 (21:03 +0100)
committerbert hubert <bert.hubert@netherlabs.nl>
Wed, 23 Jan 2019 20:03:21 +0000 (21:03 +0100)
In ff7ac440afdae4370e12a1b9eb21d4b1389a861f we added trimming of whitespace,
so you could turn " 1.2.3.4 " into an A record 0x01020304. This commit made us more flexible
but also six times slower in some microbenchmarks.

This commit restores the old performance which shaves double digits percentages of time from many
benchmarks in 'speedtest', while making "make-a record" six times faster again.

pdns/rcpgenerator.cc

index d227f73694e99fb4e91621bfbad0f607a0cfd8e7..05661fe80bca4a7dbde5278959fb933a5fdc3005 100644 (file)
@@ -38,7 +38,8 @@
 RecordTextReader::RecordTextReader(const string& str, const DNSName& zone) : d_string(str), d_zone(zone), d_pos(0)
 {
    /* remove whitespace */
-   boost::trim_if(d_string, boost::algorithm::is_space());
+   if(!d_string.empty() && ( dns_isspace(*d_string.begin()) || dns_isspace(*d_string.rbegin()) ))
+     boost::trim_if(d_string, boost::algorithm::is_space());
    d_end = d_string.size();
 }