On Thu, Jan 28, 2016 at 11:42 PM, bdoetsch <bdoet...@ameritech.net> wrote:

>
> @Fedor -- I think you and I are trying to get the same result, a TXT
> parsing routine that clearly delineates between TXT chunk components.
> Hopefully this submission can help us both.
>

Hi Brady,

By the way, did you take a look at Fedor's suggested patches, particularly
the one from 2015-03-21?  Would that patch cover the functionality you need?


> Daniel, David, et al.,
>
> I've taken a second crack at a patch for this issue, taking into account
> the excellent advice from David to include any new structs explicitly in
> the headers, and give new structs their own parse routines, as opposed to
> casting between common initial sequences, which is what I had done the
> first time in an attempt to be minimal.


(BTW, I believe casting between common initial sequences is legal if
they're all in the same union, so I think that Fedor's patch is OK in that
respect.)


>   Any feedback on this new code is welcome, I'd love more eyes on it to
> make sure I haven't made mistakes, and I'm happy to make modifications if
> need be.  Because I've included associated tests, this patch is against
> David's git repo (https://github.com/daviddrysdale/c-ares.git), commit
> "2dd71de," because that is the fork that has the unit tests, but I believe
> is current with the main project.
>
> I use a new "ares_txt_cmps_reply" struct which deprecates the
> "ares_txt_reply" struct.  It is parsed by its own function
> "ares_parse_txt_cmps_reply()" which is a modified implementation of
> "ares_parse_txt_reply()".  The patch adds new file
> "ares_parse_txt_cmps_reply.c" modifies existing files "ares.h,"
> "ares_data.[c|h]" is documented in new man page
> "ares_parse_txt_cmps_reply.3," and is tested in new test file
> "test/ares-test-parse-txt-cmps.cc".  Looking back over the mailing list, I
> saw that Jakub Hrozek requested adding TTL into the new struct if ever it
> was implemented, so I've done that as well.


Yeah, I don't actually agree with Jakub on that, as it's inconsistent with
all of the other parsed RR structures -- I think it would be better to come
up with another way of getting the TTL information out that applies to all
RR types, not just TXT records.



> Here's how it looks presently:
>
> struct ares_txt_cmps_reply {
>   struct ares_txt_cmps_reply  *next;
>   unsigned char           **txt_cmps;  /* array of null terminated strings
> */
>   unsigned int            *txt_cmps_lengths;  /* length of each string in
> the array, don't rely on '\0' */
>   unsigned int            txt_cmps_count; /* number of strings/lengths in
> the array(s) */
>   unsigned short          dnstype;
>   unsigned short          dnsclass;
>

I've not looked at the patch yet, but I'd wonder whether these two fields
are necessary -- can they ever be anything other than IN(1) / TXT(16) ?


>   unsigned int            ttl;
> };
>
>
> To see the full submission, clone David's repo at the github url above,
> checkout commit 2dd71de, perform a git-apply on that revision using the
> attached patch.  Let me know how you feel about the direction.  I'm not
> married to it, so feel free to speak your mind...
>
> My continued thanks,
>
> Brady
>
>
>
>
>
>

Reply via email to