It seems that a TXT record that's longer than 255 bytes will wrap the length counter on the TXT record data, causing unexpected havoc when attempting to serve the TXT record out. Since the counter in question is only 1 byte, obviously lengths > 255 bytes aren't possible, but there should be some kind of check/limit to prevent this sort of error from generating busted packets. I'll see what I can do about banging out a patch myself, but wanted to get something on record for this issue.
Attachment 'Splits large TXT records into max 255-byte chunks, like BIND and friends.' (04_split_content.diff) https://gist.github.com/5466634
It appears that breaking the body up into multiple sections might be a workable solution; I'll look into that...
I've attached a patch to resolve this issue. It's fairly short, but solves the problem by splitting long TXT data (like for SPF records, DomainKeys, etc.) into 255-byte RDATA chunks, as recommended in the RFC, and used in implementations like BIND.
Fixed in commit 1340, thanks.