1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
--- gconf/gconfd.c.orig Fri May 5 12:40:23 2006
+++ gconf/gconfd.c Fri May 5 12:41:43 2006
@@ -124,12 +124,6 @@
static gboolean in_shutdown = FALSE;
-/*
- * Flag indicating we received a SIGHUP and we should reaload
- * all sources during the next periodic_cleanup()
- */
-static gboolean need_db_reload = FALSE;
-
/*
* CORBA goo
*/
@@ -410,6 +404,18 @@
}
static void
+reload_db (void)
+{
+ gconf_log (GCL_INFO, _("SIGHUP received, reloading all databases"));
+
+ logfile_save ();
+ shutdown_databases ();
+ init_databases ();
+ gconf_server_load_sources ();
+ logfile_read ();
+}
+
+static void
signal_handler (int signo)
{
static gint in_fatal = 0;
@@ -482,8 +488,8 @@
case SIGHUP:
--in_fatal;
- /* reload sources during next periodic_cleanup() */
- need_db_reload = TRUE;
+ /* reload sources immediately */
+ reload_db ();
break;
#endif
@@ -864,18 +870,6 @@
static gboolean
periodic_cleanup_timeout(gpointer data)
{
- if (need_db_reload)
- {
- gconf_log (GCL_INFO, _("SIGHUP received, reloading all databases"));
-
- need_db_reload = FALSE;
- logfile_save ();
- shutdown_databases ();
- init_databases ();
- gconf_server_load_sources ();
- logfile_read ();
- }
-
gconf_log (GCL_DEBUG, "Performing periodic cleanup, expiring cache cruft");
drop_old_clients ();
|