'struct sockaddr' is not large enough to store a general sockaddr.

In particular, if IPv6 is used, then sizeof sockaddr_in6 > sizeof sockaddr,
resulting in a segfault:

https://bugzilla.redhat.com/show_bug.cgi?id=986601

RWMJ:
 - Minor formatting
 - Free tls->addr on normal exit path