[Spice-devel] [PATCH spice-server v2] RFC: Support abstract Unix sockets

Frediano Ziglio fziglio at redhat.com
Wed Nov 22 16:35:06 UTC 2017


> 
> > 
> > On Wed, Nov 22, 2017 at 12:11:33PM +0000, Frediano Ziglio wrote:
> > > Allows to specify abstract Unix sockets addresses.
> > > These Unix sockets are supported on Linux and allows to not
> > > have file system names.
> > 
> > What would be the use-case? Just cleaner not to have a dummy path in the
> > FS? Or does it bring more? I'd say why not, though a spice-gtk patch
> > will be needed too.
> > 
> 
> They have pro and cons. As said they don't have a FS name so for instance
> programs running on some chroot can access the sockets too. For instance
> recent Xorg bind to @/tmp/.X11-unix/X<num> also.
> Also you don't need to unlink the FS entry at the end. This could avoid
> to do the cleanup from libvirt.
> On the cons not having a FS prevent easily to change permissions on the
> socket.
> 

On the paranoia level (happily you could not throw rotten tomatoes remotely):
A pro is that is easy to implement.
A cons is that you cannot have a FS name starting with "@". But probably
you want a full name here so would start with "/" in any case.

> > 
> > > 
> > > Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> > > ---
> > >  server/reds.c | 6 +++++-
> > >  1 file changed, 5 insertions(+), 1 deletion(-)
> > > 
> > > Changes since v1:
> > > - do not unlink no file socket.
> > > 
> > > diff --git a/server/reds.c b/server/reds.c
> > > index ebcbe496..ca0bb75a 100644
> > > --- a/server/reds.c
> > > +++ b/server/reds.c
> > > @@ -2585,8 +2585,12 @@ static int reds_init_socket(const char *addr, int
> > > portnr, int family)
> > >  
> > >          local.sun_family = AF_UNIX;
> > >          g_strlcpy(local.sun_path, addr, sizeof(local.sun_path));
> > > -        unlink(local.sun_path);
> > >          len = SUN_LEN(&local);
> > > +        if (local.sun_path[0] == '@') {
> > > +            local.sun_path[0] = 0;
> > > +        } else {
> > > +            unlink(local.sun_path);
> > > +        }
> > >          if (bind(slisten, (struct sockaddr *)&local, len) == -1) {
> > >              perror("bind");
> > >              return -1;


More information about the Spice-devel mailing list