summaryrefslogtreecommitdiff
path: root/deps/cares
diff options
context:
space:
mode:
authorFedor Indutny <fedor@indutny.com>2014-03-28 00:09:20 +0400
committerBen Noordhuis <info@bnoordhuis.nl>2015-05-12 10:47:51 +0200
commit0f850f7ae743e454a831fc2d2da425767303c8b6 (patch)
tree2f3ca12b552fdfdd64a872ab6f95983c753498ed /deps/cares
parent7e1c0e75ed6a7833a8a653936b8897f64bd0006d (diff)
downloadandroid-node-v8-0f850f7ae743e454a831fc2d2da425767303c8b6.tar.gz
android-node-v8-0f850f7ae743e454a831fc2d2da425767303c8b6.tar.bz2
android-node-v8-0f850f7ae743e454a831fc2d2da425767303c8b6.zip
deps: provide TXT chunk info in c-ares
Provide more information in `ares_txt_reply` to coalesce chunks from the same record into one string. fix #7367
Diffstat (limited to 'deps/cares')
-rw-r--r--deps/cares/include/ares.h2
-rw-r--r--deps/cares/src/ares_parse_txt_reply.c5
2 files changed, 5 insertions, 2 deletions
diff --git a/deps/cares/include/ares.h b/deps/cares/include/ares.h
index 7233c5acf8..f9abe854d5 100644
--- a/deps/cares/include/ares.h
+++ b/deps/cares/include/ares.h
@@ -473,6 +473,8 @@ struct ares_txt_reply {
struct ares_txt_reply *next;
unsigned char *txt;
size_t length; /* length excludes null termination */
+ unsigned char record_start; /* 1 - if start of new record
+ * 0 - if a chunk in the same record */
};
struct ares_naptr_reply {
diff --git a/deps/cares/src/ares_parse_txt_reply.c b/deps/cares/src/ares_parse_txt_reply.c
index 981db4cd54..dabf73cd3f 100644
--- a/deps/cares/src/ares_parse_txt_reply.c
+++ b/deps/cares/src/ares_parse_txt_reply.c
@@ -133,8 +133,6 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
break;
}
- ++strptr;
-
/* Allocate storage for this TXT answer appending it to the list */
txt_curr = ares_malloc_data(ARES_DATATYPE_TXT_REPLY);
if (!txt_curr)
@@ -152,6 +150,7 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
}
txt_last = txt_curr;
+ txt_curr->record_start = strptr == aptr;
txt_curr->length = substr_len;
txt_curr->txt = malloc (substr_len + 1/* Including null byte */);
if (txt_curr->txt == NULL)
@@ -159,6 +158,8 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
status = ARES_ENOMEM;
break;
}
+
+ ++strptr;
memcpy ((char *) txt_curr->txt, strptr, substr_len);
/* Make sure we NULL-terminate */