mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 18:28:25 +00:00
Furthet tweak to RRset sort.
This commit is contained in:
22
src/dnssec.c
22
src/dnssec.c
@@ -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
|
|||||||
}
|
}
|
||||||
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
|
|||||||
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];
|
||||||
|
|||||||
Reference in New Issue
Block a user