From ca5432a79b6fe16a9e14dfbd0d3880d9c60eac73 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sat, 10 Jan 2009 18:55:33 +0100 Subject: listen: remove the socket source from the main context Free memory before exiting. --- src/listen.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/listen.c b/src/listen.c index 62d4e2e6..d0dfa3c7 100644 --- a/src/listen.c +++ b/src/listen.c @@ -58,6 +58,8 @@ struct listen_socket { struct listen_socket *next; int fd; + + guint source_id; }; static struct listen_socket *listen_sockets; @@ -101,8 +103,8 @@ static int establishListen(int pf, const struct sockaddr *addrp, ls->fd = sock; channel = g_io_channel_unix_new(sock); - g_io_add_watch(channel, G_IO_IN, - listen_in_event, GINT_TO_POINTER(sock)); + ls->source_id = g_io_add_watch(channel, G_IO_IN, + listen_in_event, GINT_TO_POINTER(sock)); g_io_channel_unref(channel); ls->next = listen_sockets; @@ -281,6 +283,7 @@ void closeAllListenSockets(void) struct listen_socket *ls = listen_sockets; listen_sockets = ls->next; + g_source_remove(ls->source_id); close(ls->fd); g_free(ls); } -- cgit v1.2.3