diff options
author | Hans Petter Jansson <hpj@novell.com> | 2008-05-21 21:06:24 +0000 |
---|---|---|
committer | Hans Petter <hansp@src.gnome.org> | 2008-05-21 21:06:24 +0000 |
commit | 5086dd77de212a495e3261b70167712312c11ff1 (patch) | |
tree | fe68b83768e040f0fc3623f6b8b0351c92ee095b | |
parent | 55ab9e2ab410b784583940a2eeedff84a49ddf29 (diff) | |
download | gvfs-5086dd77de212a495e3261b70167712312c11ff1.tar.gz |
When the process receives one of the HUP, TERM or INT signals, shut down
2008-05-22 Hans Petter Jansson <hpj@novell.com>
* client/gvfsfusedaemon.c (shutown_on_idle)
(shutdown_signal)
(vfs_init): When the process receives one of the HUP, TERM or
INT signals, shut down gracefully. Fixes GNOME bug #531516.
svn path=/trunk/; revision=1775
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | client/gvfsfusedaemon.c | 17 |
2 files changed, 24 insertions, 0 deletions
@@ -1,3 +1,10 @@ +2008-05-22 Hans Petter Jansson <hpj@novell.com> + + * client/gvfsfusedaemon.c (shutown_on_idle) + (shutdown_signal) + (vfs_init): When the process receives one of the HUP, TERM or + INT signals, shut down gracefully. Fixes GNOME bug #531516. + 2008-05-21 Tomas Bzatek <tbzatek@redhat.com> * daemon/gvfsbackendsmb.c: (do_mount): diff --git a/client/gvfsfusedaemon.c b/client/gvfsfusedaemon.c index 6ccb10da..7d17ca43 100644 --- a/client/gvfsfusedaemon.c +++ b/client/gvfsfusedaemon.c @@ -2049,6 +2049,18 @@ dbus_filter_func (DBusConnection *connection, return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } +static gboolean +shutdown_on_idle (void) +{ + fuse_exit (fuse_get_context ()->fuse); + return FALSE; +} + +static void +shutdown_signal (gint signum) +{ + g_idle_add ((GSourceFunc) shutdown_on_idle, NULL); +} static gpointer vfs_init (struct fuse_conn_info *conn) @@ -2102,6 +2114,11 @@ vfs_init (struct fuse_conn_info *conn) volume_monitor = g_object_new (g_type_from_name ("GDaemonVolumeMonitor"), NULL); subthread_main_loop = g_main_loop_new (NULL, FALSE); + + signal (SIGHUP, shutdown_signal); + signal (SIGTERM, shutdown_signal); + signal (SIGINT, shutdown_signal); + subthread = g_thread_create ((GThreadFunc) subthread_main, NULL, FALSE, NULL); return NULL; |