summaryrefslogtreecommitdiff
path: root/daemon/gvfsdaemon.c
diff options
context:
space:
mode:
authorAntoine Jacoutot <ajacoutot@gnome.org>2014-01-23 14:40:32 +0100
committerOndrej Holy <oholy@redhat.com>2014-01-23 15:09:49 +0100
commit2909ef002746201a83922fdd1c5efad6766347f8 (patch)
tree546d1530a70d4a9365f7d766c0b65e0c233c6197 /daemon/gvfsdaemon.c
parent9a114917fd19cc7225df10765de2ead036a4d080 (diff)
downloadgvfs-2909ef002746201a83922fdd1c5efad6766347f8.tar.gz
gvfsdaemon: properly remove socket_dir
When not using abstract sockets, gvfs tries to rmdir the socket directory but it still contains the socket so the call fails. We now make sure to remove the socket first. https://bugzilla.gnome.org/show_bug.cgi?id=720482
Diffstat (limited to 'daemon/gvfsdaemon.c')
-rw-r--r--daemon/gvfsdaemon.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/daemon/gvfsdaemon.c b/daemon/gvfsdaemon.c
index 9a9cb008..3018e34c 100644
--- a/daemon/gvfsdaemon.c
+++ b/daemon/gvfsdaemon.c
@@ -598,12 +598,18 @@ static void
new_connection_data_free (void *memory)
{
NewConnectionData *data = memory;
+ gchar *socket;
/* Remove the socket and dir after connected */
- if (data->socket_dir)
- rmdir (data->socket_dir);
+ if (data->socket_dir)
+ {
+ socket = g_strdup_printf ("%s/socket", data->socket_dir);
+ g_unlink (socket);
+ g_free (socket);
+ rmdir (data->socket_dir);
+ g_free (data->socket_dir);
+ }
- g_free (data->socket_dir);
g_free (data);
}
@@ -900,13 +906,8 @@ handle_get_connection (GVfsDBusDaemon *object,
return TRUE;
error_out:
- g_free (data);
+ new_connection_data_free (data);
g_free (address1);
- if (socket_dir)
- {
- rmdir (socket_dir);
- g_free (socket_dir);
- }
return TRUE;
}