summaryrefslogtreecommitdiff
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
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
-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;
}