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
This commit is contained in:
parent
7e1c0e75ed
commit
0f850f7ae7
2
deps/cares/include/ares.h
vendored
2
deps/cares/include/ares.h
vendored
@ -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 {
|
||||
|
5
deps/cares/src/ares_parse_txt_reply.c
vendored
5
deps/cares/src/ares_parse_txt_reply.c
vendored
@ -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 */
|
||||
|
Loading…
x
Reference in New Issue
Block a user