On Fri, Nov 01, 2024 at 06:47:52AM -0700, Steve Sistare wrote:
> +void qtest_connect_deferred(QTestState *s)
> +{
> + g_autofree gchar *socket_path = NULL;
> + g_autofree gchar *qmp_socket_path = NULL;
> +
> + socket_path = g_strdup_printf("%s/qtest-%d.sock",
> + g_get_tmp_dir(), getpid());
> + qmp_socket_path = g_strdup_printf("%s/qtest-%d.qmp",
> + g_get_tmp_dir(), getpid());
> +
> + s->fd = socket_accept(s->sock);
> + if (s->fd >= 0) {
> + s->qmp_fd = socket_accept(s->qmpsock);
> + }
> + unlink(socket_path);
> + unlink(qmp_socket_path);
Why need to unlink again here if both sock/qmpsock are cached? I assume we
could remove these lines together with above g_strdup_printf()s.
Otherwise two paths are leaked anyway (and we may also want to have some
macros to represent the paths used in two places).
Maybe we could also clear sock/qmpsock too after use, then check at the
entrance to skip qtest_connect_deferred() if already connected.
> + g_assert(s->fd >= 0 && s->qmp_fd >= 0);
> /* ask endianness of the target */
> -
> s->big_endian = qtest_query_target_endianness(s);
> -
> - return s;
> }
--
Peter Xu