[PATCH wayland v3 5/7] server: Restructure _wl_display_add_socket() to take an explicit fd argument

Pekka Paalanen ppaalanen at gmail.com
Mon Dec 14 00:34:55 PST 2015


On Mon,  7 Dec 2015 22:49:17 -0800
Bryce Harrington <bryce at osg.samsung.com> wrote:

> Move the the wl_os_socket_cloexec() to the callers.
> 
> Signed-off-by: Bryce Harrington <bryce at osg.samsung.com>
> ---
>  src/wayland-server.c | 24 ++++++++++++++++--------
>  1 file changed, 16 insertions(+), 8 deletions(-)
> 
> diff --git a/src/wayland-server.c b/src/wayland-server.c
> index 0f04f66..7c25858 100644
> --- a/src/wayland-server.c
> +++ b/src/wayland-server.c
> @@ -1129,15 +1129,10 @@ wl_socket_init_for_display_name(struct wl_socket *s, const char *name)
>  }
>  
>  static int
> -_wl_display_add_socket(struct wl_display *display, struct wl_socket *s)
> +_wl_display_bind_socket_source(struct wl_display *display, struct wl_socket *s)
>  {
>  	socklen_t size;
>  
> -	s->fd = wl_os_socket_cloexec(PF_LOCAL, SOCK_STREAM, 0);
> -	if (s->fd < 0) {
> -		return -1;
> -	}
> -
>  	size = offsetof (struct sockaddr_un, sun_path) + strlen(s->addr.sun_path);
>  	if (bind(s->fd, (struct sockaddr *) &s->addr, size) < 0) {
>  		wl_log("bind() failed with error: %m\n");
> @@ -1153,6 +1148,7 @@ _wl_display_add_socket(struct wl_display *display, struct wl_socket *s)
>  					 WL_EVENT_READABLE,
>  					 socket_data, display);
>  	if (s->source == NULL) {
> +		wl_log("failed to establish event source\n");
>  		return -1;
>  	}
>  
> @@ -1185,7 +1181,13 @@ wl_display_add_socket_auto(struct wl_display *display)
>  		if (wl_socket_lock(s) < 0)
>  			continue;
>  
> -		if (_wl_display_add_socket(display, s) < 0) {
> +		s->fd = wl_os_socket_cloexec(PF_LOCAL, SOCK_STREAM, 0);
> +		if (s->fd < 0) {
> +			wl_socket_destroy(s);
> +			return NULL;
> +		}
> +
> +		if (_wl_display_bind_socket_source(display, s) < 0) {
>  			wl_socket_destroy(s);
>  			return NULL;
>  		}
> @@ -1247,7 +1249,13 @@ wl_display_add_socket(struct wl_display *display, const char *name)
>  		return -1;
>  	}
>  
> -	if (_wl_display_add_socket(display, s) < 0) {
> +	s->fd = wl_os_socket_cloexec(PF_LOCAL, SOCK_STREAM, 0);
> +	if (s->fd <0) {
> +		wl_socket_destroy(s);
> +		return -1;
> +	}
> +
> +	if (_wl_display_bind_socket_source(display, s) < 0) {
>  		wl_socket_destroy(s);
>  		return -1;
>  	}

Hi,

this looks good to me (didn't test), so assuming the patch adding
wl_display_add_socket_fd() is good:

Reviewed-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>


Thanks,
pq
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 811 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freedesktop.org/archives/wayland-devel/attachments/20151214/095edd59/attachment.sig>


More information about the wayland-devel mailing list