Julien Cristau <[EMAIL PROTECTED]> writes: > On Wed, Sep 10, 2008 at 11:28:59 -0500, Xavier Toth wrote: > >> I noticed that the socket file /tmp/.X11-unix/X0 is being created on >> my Fedora 9 box despite the fact that the X server is creating an >> abstract socket which I would have thought was the preferred method of >> connecting to the server. I wrote a little test to connect to the >> abstract socket but it fails with 'Connection refused'. netstat makes >> it look like no clients are connected to the abstract socket. Any idea >> what's happening here and why my test can't connect? >> > <snip> > >> static int _open_unix(const char *file) >> { >> int fd; >> struct sockaddr_un addr = { AF_UNIX }; >> >> memset(&addr, 0, sizeof(addr)); >> addr.sun_family = AF_UNIX; >> >> fd = socket(AF_UNIX, SOCK_STREAM, 0); >> if(fd == -1) >> return -1; >> >> /* try the abstract socket first */ >> strcpy(addr.sun_path + 1, file); >> if(connect(fd, (struct sockaddr *) &addr, sizeof(addr)) != -1) { >> return fd; >> } > The size passed to connect() should be the same as that passed to bind() > by the server, which would be 'strlen(file) + 1 + offsetof(struct > sockaddr_un, sun_path)', and not sizeof(addr), for some reason. See > TRANS(SocketUNIXCreateListener) in Xtranssock.c.
Could that be related to this quote from "man unix": "Note that names in the abstract namespace are not zero-terminated." eirik _______________________________________________ xorg mailing list xorg@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/xorg