Fix possible buffer over-read in DNS TSIG parsing
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.
Merge remote-tracking branch 'origin/fastpath'

* origin/fastpath:
  Simplify a conditional with equivalent branches.
  Change EDNS parsing code to use rdlength more cautiously.
  Fix a memory leak when bind() fails due to EADDRINUSE.
  Fix possible buffer over-read in DNS TSIG parsing