isync

mailbox synchronization program
git clone https://git.code.sf.net/p/isync/isync
Log | Files | Refs | README | LICENSE

commit 9a0403f446318803ed239ba804334b4aee4f21ad
parent 167964933f42d32f1cc2a119453e71c5048e86e2
Author: Oswald Buddenhagen <ossi@users.sf.net>
Date:   Sun,  6 Sep 2015 21:02:23 +0200

de-duplicate cleanup of name-related data in error paths

"name" being both the ipv6 dns info and our own socket label.

sort-of amends 9d22641b.

Diffstat:
Msrc/socket.c | 23++++++++++++-----------
1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/src/socket.c b/src/socket.c @@ -536,14 +536,22 @@ socket_connected( conn_t *conn ) } static void -socket_connect_bail( conn_t *conn ) +socket_cleanup_names( conn_t *conn ) { #ifdef HAVE_IPV6 - freeaddrinfo( conn->addrs ); - conn->addrs = 0; + if (conn->addrs) { + freeaddrinfo( conn->addrs ); + conn->addrs = 0; + } #endif free( conn->name ); conn->name = 0; +} + +static void +socket_connect_bail( conn_t *conn ) +{ + socket_cleanup_names( conn ); conn->callbacks.connect( 0, conn->callback_aux ); } @@ -554,14 +562,7 @@ socket_close( conn_t *sock ) { if (sock->fd >= 0) socket_close_internal( sock ); - free( sock->name ); - sock->name = 0; -#ifdef HAVE_IPV6 - if (sock->addrs) { - freeaddrinfo( sock->addrs ); - sock->addrs = 0; - } -#endif + socket_cleanup_names( sock ); #ifdef HAVE_LIBSSL if (sock->ssl) { SSL_free( sock->ssl );