diff options
author | Fedor Indutny <fedor@indutny.com> | 2014-03-28 00:09:20 +0400 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2015-05-12 10:47:51 +0200 |
commit | 0f850f7ae743e454a831fc2d2da425767303c8b6 (patch) | |
tree | 2f3ca12b552fdfdd64a872ab6f95983c753498ed /deps/cares | |
parent | 7e1c0e75ed6a7833a8a653936b8897f64bd0006d (diff) | |
download | android-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.h | 2 | ||||
-rw-r--r-- | deps/cares/src/ares_parse_txt_reply.c | 5 |
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 */ |