Fix a memory leak when bind() fails due to EADDRINUSE.
Change EDNS parsing code to use rdlength more cautiously.

It shouldn't ever be negative, but if it were, using it to modify the
data pointer/length isn't appropriate.
Simplify a conditional with equivalent branches.