]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test-resolved-packet: skip most of the loop
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 12 Jul 2017 21:41:41 +0000 (21:41 +0000)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 13 Jul 2017 21:55:02 +0000 (17:55 -0400)
We want to test the edge cases, but testing all the values in between
is mostly pointless and slow on slow architectures (>1s on rpi).

src/resolve/resolved-dns-packet.c
src/resolve/resolved-dns-packet.h
src/resolve/test-resolved-packet.c

index 49a04615d4e128228fada224a7505685d066d57f..bf879475d4033d2ab1674a130d8557b283a42ab7 100644 (file)
@@ -28,7 +28,6 @@
 
 #define EDNS0_OPT_DO (1<<15)
 
-#define DNS_PACKET_SIZE_START 512u
 assert_cc(DNS_PACKET_SIZE_START > DNS_PACKET_HEADER_SIZE)
 
 typedef struct DnsPacketRewinder {
index a65d6d38cf972c88530f8a40f16967bc24727320..d4c6b3c9cbe823380bf1336d8473a544fccafed4 100644 (file)
@@ -56,10 +56,14 @@ struct DnsPacketHeader {
 #define UDP_PACKET_HEADER_SIZE (sizeof(struct iphdr) + sizeof(struct udphdr))
 
 /* The various DNS protocols deviate in how large a packet can grow,
  but the TCP transport has a 16bit size field, hence that appears to
  be the absolute maximum. */
* but the TCP transport has a 16bit size field, hence that appears to
* be the absolute maximum. */
 #define DNS_PACKET_SIZE_MAX 0xFFFFu
 
+/* The default size to use for allocation when we don't know how large
+ * the packet will turn out to be. */
+#define DNS_PACKET_SIZE_START 512u
+
 /* RFC 1035 say 512 is the maximum, for classic unicast DNS */
 #define DNS_PACKET_UNICAST_SIZE_MAX 512u
 
index 1b0041214bbee8bb505e96ca5f1fb97a2d92c625..cf886b1bf2c8f81f6b5dcd0de15d7308d657fb48 100644 (file)
@@ -31,6 +31,9 @@ static void test_dns_packet_new(void) {
 
                 log_debug("dns_packet_new: %zu → %zu", i, p->allocated);
                 assert_se(p->allocated >= MIN(DNS_PACKET_SIZE_MAX, i));
+
+                if (i > DNS_PACKET_SIZE_START + 10 && i < DNS_PACKET_SIZE_MAX - 10)
+                        i = MIN(i * 2, DNS_PACKET_SIZE_MAX - 10);
         }
 
         assert_se(dns_packet_new(&p2, DNS_PROTOCOL_DNS, DNS_PACKET_SIZE_MAX + 1) == -EFBIG);