Hi

On Tue, Feb 25, 2025 at 2:47 PM Haoqian He <haoqian...@smartx.com> wrote:
>
> If the chardev is client, the socket file path in localAddr may be NULL.
> This is because the socket path comes from getsockname(), according
> to man page, getsockname() returns the current address bound by the
> socket sockfd. If the chardev is client, it's socket is unbound sockfd.
>
> Therefore, when computing the client chardev socket file path, using
> remoteAddr is more appropriate.
>
> Signed-off-by: Haoqian He <haoqian...@smartx.com>
> ---
>  chardev/char-socket.c | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/chardev/char-socket.c b/chardev/char-socket.c
> index 91496ceda9..2f842f9f88 100644
> --- a/chardev/char-socket.c
> +++ b/chardev/char-socket.c
> @@ -571,9 +571,13 @@ static char *qemu_chr_compute_filename(SocketChardev *s)
>
>      switch (ss->ss_family) {
>      case AF_UNIX:
> -        return g_strdup_printf("unix:%s%s",
> -                               ((struct sockaddr_un *)(ss))->sun_path,
> -                               s->is_listen ? ",server=on" : "");
> +        if (s->is_listen) {
> +            return g_strdup_printf("unix:%s,server=on",
> +                                   ((struct sockaddr_un *)(ss))->sun_path);
> +        } else {
> +            return g_strdup_printf("unix:%s",
> +                                   ((struct sockaddr_un *)(ps))->sun_path);
> +        }
>      case AF_INET6:
>          left  = "[";
>          right = "]";
> --
> 2.48.1
>
>

This patch doesn't change anything, and I don't understand the problem
you are trying to fix.

Can you provide more details or a test scenario?

thanks

-- 
Marc-André Lureau

Reply via email to