Skip to content

Commit

Permalink
Do not build compression table for 1 requested name.
Browse files Browse the repository at this point in the history
  • Loading branch information
vstakhov committed Apr 2, 2014
1 parent 897b0bc commit d13ebe4
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 6 deletions.
10 changes: 8 additions & 2 deletions src/compression.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,10 +88,14 @@ rdns_write_name_compressed (struct rdns_request *req,
uint8_t *target = req->packet + req->pos;
const char *pos = name, *end = name + namelen;
unsigned int remain = req->packet_len - req->pos - 5, label_len;
struct rdns_compression_entry *head = *comp, *test;
struct rdns_compression_entry *head = NULL, *test;
struct rdns_resolver *resolver = req->resolver;
uint16_t pointer;

if (comp != NULL) {
head = *comp;
}

while (pos < end && remain > 0) {
if (head != NULL) {
test = rdns_can_compress (pos, head);
Expand Down Expand Up @@ -132,7 +136,9 @@ rdns_write_name_compressed (struct rdns_request *req,
label_len = remain - 1;
}

rdns_add_compressed (pos, end, comp, target - req->packet);
if (comp != NULL) {
rdns_add_compressed (pos, end, comp, target - req->packet);
}
/* Write label as is */
*target++ = (uint8_t)label_len;
memcpy (target, pos, label_len);
Expand Down
17 changes: 13 additions & 4 deletions src/resolver.c
Original file line number Diff line number Diff line change
Expand Up @@ -522,10 +522,19 @@ rdns_make_request_full (
type = DNS_T_TLSA;
break;
}
if (!rdns_add_rr (req, cur_name, clen, type, &comp)) {
REF_RELEASE (req);
rnds_compression_free (comp);
return NULL;
if (queries > 1) {
if (!rdns_add_rr (req, cur_name, clen, type, &comp)) {
REF_RELEASE (req);
rnds_compression_free (comp);
return NULL;
}
}
else {
if (!rdns_add_rr (req, cur_name, clen, type, NULL)) {
REF_RELEASE (req);
rnds_compression_free (comp);
return NULL;
}
}
}

Expand Down

0 comments on commit d13ebe4

Please sign in to comment.