Commit 1486a9c7 authored by Simon Kelley's avatar Simon Kelley

Furthet tweak to RRset sort.

parent 5ada8885
...@@ -233,8 +233,11 @@ static void sort_rrset(struct dns_header *header, size_t plen, u16 *rr_desc, int ...@@ -233,8 +233,11 @@ static void sort_rrset(struct dns_header *header, size_t plen, u16 *rr_desc, int
dp1 = dp2 = rr_desc; dp1 = dp2 = rr_desc;
for (quit = 0, left1 = 0, left2 = 0; !quit;) for (quit = 0, left1 = 0, left2 = 0, len1 = 0, len2 = 0; !quit;)
{ {
if (left1 != 0)
memmove(buff1, buff1 + len1 - left1, left1);
if ((len1 = get_rdata(header, plen, end1, buff1 + left1, &p1, &dp1)) == 0) if ((len1 = get_rdata(header, plen, end1, buff1 + left1, &p1, &dp1)) == 0)
{ {
quit = 1; quit = 1;
...@@ -243,6 +246,9 @@ static void sort_rrset(struct dns_header *header, size_t plen, u16 *rr_desc, int ...@@ -243,6 +246,9 @@ static void sort_rrset(struct dns_header *header, size_t plen, u16 *rr_desc, int
} }
len1 += left1; len1 += left1;
if (left2 != 0)
memmove(buff2, buff2 + len2 - left2, left2);
if ((len2 = get_rdata(header, plen, end2, buff2 + left2, &p2, &dp2)) == 0) if ((len2 = get_rdata(header, plen, end2, buff2 + left2, &p2, &dp2)) == 0)
{ {
quit = 1; quit = 1;
...@@ -252,21 +258,13 @@ static void sort_rrset(struct dns_header *header, size_t plen, u16 *rr_desc, int ...@@ -252,21 +258,13 @@ static void sort_rrset(struct dns_header *header, size_t plen, u16 *rr_desc, int
len2 += left2; len2 += left2;
if (len1 > len2) if (len1 > len2)
{ left1 = len1 - len2, left2 = 0, len = len2;
left1 = len1 - len2;
left2 = 0;
len = len2;
}
else else
{ left2 = len2 - len1, left1 = 0, len = len1;
left2 = len2 - len1;
left1 = 0;
len = len1;
}
rc = memcmp(buff1, buff2, len); rc = memcmp(buff1, buff2, len);
if (rc == 1 || (rc == 0 && quit && len2 > len1)) if (rc == 1 || (rc == 0 && quit && len1 > len2))
{ {
unsigned char *tmp = rrset[i+1]; unsigned char *tmp = rrset[i+1];
rrset[i+1] = rrset[i]; rrset[i+1] = rrset[i];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment