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");
         }