Dump server objects on SIGHUP.
diff --git a/server/select.c b/server/select.c
index 60a6fd4..de0c686 100644
--- a/server/select.c
+++ b/server/select.c
@@ -150,6 +150,16 @@
free( user );
}
+#ifdef DEBUG_OBJECTS
+static int do_dump_objects;
+
+/* SIGHUP handler */
+static void sighup()
+{
+ do_dump_objects = 1;
+}
+#endif
+
/* server main loop */
void select_loop(void)
{
@@ -157,6 +167,9 @@
setsid();
signal( SIGPIPE, SIG_IGN );
+#ifdef DEBUG_OBJECTS
+ signal( SIGHUP, sighup );
+#endif
while (nb_users)
{
@@ -199,7 +212,14 @@
if (!ret) continue;
if (ret == -1) {
- if (errno == EINTR) continue;
+ if (errno == EINTR)
+ {
+#ifdef DEBUG_OBJECTS
+ if (do_dump_objects) dump_objects();
+ do_dump_objects = 0;
+#endif
+ continue;
+ }
perror("select");
}