diff options
author | Antoine Jacoutot <ajacoutot@gnome.org> | 2014-01-23 14:40:32 +0100 |
---|---|---|
committer | Ondrej Holy <oholy@redhat.com> | 2014-01-23 15:09:49 +0100 |
commit | 2909ef002746201a83922fdd1c5efad6766347f8 (patch) | |
tree | 546d1530a70d4a9365f7d766c0b65e0c233c6197 | |
parent | 9a114917fd19cc7225df10765de2ead036a4d080 (diff) | |
download | gvfs-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.c | 19 |
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; } |