Explorar el Código

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.
Oswald Buddenhagen hace 9 años
padre
commit
9a0403f446
Se han modificado 1 ficheros con 12 adiciones y 11 borrados
  1. 12 11
      src/socket.c

+ 12 - 11
src/socket.c

@@ -536,14 +536,22 @@ socket_connected( conn_t *conn )
 }
 }
 
 
 static void
 static void
-socket_connect_bail( conn_t *conn )
+socket_cleanup_names( conn_t *conn )
 {
 {
 #ifdef HAVE_IPV6
 #ifdef HAVE_IPV6
-	freeaddrinfo( conn->addrs );
-	conn->addrs = 0;
+	if (conn->addrs) {
+		freeaddrinfo( conn->addrs );
+		conn->addrs = 0;
+	}
 #endif
 #endif
 	free( conn->name );
 	free( conn->name );
 	conn->name = 0;
 	conn->name = 0;
+}
+
+static void
+socket_connect_bail( conn_t *conn )
+{
+	socket_cleanup_names( conn );
 	conn->callbacks.connect( 0, conn->callback_aux );
 	conn->callbacks.connect( 0, conn->callback_aux );
 }
 }
 
 
@@ -554,14 +562,7 @@ socket_close( conn_t *sock )
 {
 {
 	if (sock->fd >= 0)
 	if (sock->fd >= 0)
 		socket_close_internal( sock );
 		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
 #ifdef HAVE_LIBSSL
 	if (sock->ssl) {
 	if (sock->ssl) {
 		SSL_free( sock->ssl );
 		SSL_free( sock->ssl );