server: Create the socket FD after taking the lock
authorJasper St. Pierre <jstpierre@mecheye.net>
Thu, 8 May 2014 14:24:06 +0000 (10:24 -0400)
committerJasper St. Pierre <jstpierre@mecheye.net>
Tue, 5 Aug 2014 19:42:59 +0000 (15:42 -0400)
We're going to split out the lock-taking to another function so we
can repetitively try locks.

src/wayland-server.c

index 019961e..eb6a3c5 100644 (file)
@@ -1083,12 +1083,6 @@ wl_display_add_socket(struct wl_display *display, const char *name)
        if (s == NULL)
                return -1;
 
-       s->fd = wl_os_socket_cloexec(PF_LOCAL, SOCK_STREAM, 0);
-       if (s->fd < 0) {
-               wl_socket_destroy(s);
-               return -1;
-       }
-
        if (name == NULL)
                name = getenv("WAYLAND_DISPLAY");
        if (name == NULL)
@@ -1115,6 +1109,12 @@ wl_display_add_socket(struct wl_display *display, const char *name)
                return -1;
        }
 
+       s->fd = wl_os_socket_cloexec(PF_LOCAL, SOCK_STREAM, 0);
+       if (s->fd < 0) {
+               wl_socket_destroy(s);
+               return -1;
+       }
+
        size = offsetof (struct sockaddr_un, sun_path) + name_size;
        if (bind(s->fd, (struct sockaddr *) &s->addr, size) < 0) {
                wl_log("bind() failed with error: %m\n");