Commit cda89f3a authored by David Herrmann's avatar David Herrmann Committed by Kristian Høgsberg
Browse files

connection: close pending outgoing fds on shutdown



When destroying a wl_connection object, there might still be data in the
queue. We would leak open file-descriptors so we must close them.
Signed-off-by: default avatarDavid Herrmann <dh.herrmann@googlemail.com>
parent c13a65fd
......@@ -167,9 +167,27 @@ wl_connection_create(int fd)
return connection;
}
static void
close_fds(struct wl_buffer *buffer)
{
int fds[MAX_FDS_OUT], i, count;
size_t size;
size = buffer->head - buffer->tail;
if (size == 0)
return;
wl_buffer_copy(buffer, fds, size);
count = size / sizeof fds[0];
for (i = 0; i < count; i++)
close(fds[i]);
buffer->tail += size;
}
void
wl_connection_destroy(struct wl_connection *connection)
{
close_fds(&connection->fds_out);
close(connection->fd);
free(connection);
}
......@@ -205,23 +223,6 @@ build_cmsg(struct wl_buffer *buffer, char *data, int *clen)
}
}
static void
close_fds(struct wl_buffer *buffer)
{
int fds[MAX_FDS_OUT], i, count;
size_t size;
size = buffer->head - buffer->tail;
if (size == 0)
return;
wl_buffer_copy(buffer, fds, size);
count = size / sizeof fds[0];
for (i = 0; i < count; i++)
close(fds[i]);
buffer->tail += size;
}
static void
decode_cmsg(struct wl_buffer *buffer, struct msghdr *msg)
{
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment