Index: trunk/src/sh_socket.c
===================================================================
--- trunk/src/sh_socket.c	(revision 419)
+++ trunk/src/sh_socket.c	(revision 421)
@@ -165,5 +165,8 @@
 #include "sh_utils.h"
 
-
+/* The reload list stores information about
+ * reloads confirmed by clients (startup and/or
+ * runtime cinfiguration reloaded).
+ */
 struct reload_cmd {
   char          clt[SH_MAXMSGLEN];
@@ -235,4 +238,6 @@
       if (item->status_now != CLT_INACTIVE)
 	{
+	  int flag = 0;
+
 	  file = get_client_conf_file (item->hostname, &dummy);
 
@@ -250,4 +255,6 @@
 		  if (0 == sl_strcmp(new->clt, item->hostname))
 		    {
+		      flag = 1; /* Client is in list already */
+
 #ifdef SH_DEBUG_SOCKET
 		      fprintf(stderr, "%lu <> %lu\n", 
@@ -266,7 +273,31 @@
 		  new = new->next;
 		}
-	    }
-	}
-    }
+
+	      if (flag == 0)
+		{
+		  /* client is active, but start message has been missed; reload 
+		   */
+		  sl_strlcpy(cmd.cmd, _("RELOAD"),    SH_MAXMSGLEN);
+		  sl_strlcpy(cmd.clt, item->hostname, SH_MAXMSGLEN);
+		  sh_socket_add2list (&cmd);
+
+		  /* Add the client to the reload list and set
+		   * time to 0, since we don't know the startup time.
+		   */
+		  sh_socket_add2reload (item->hostname);
+		  new = reloadlist;
+		  while (new)
+		    {
+		      if (0 == sl_strcmp(new->clt, item->hostname))
+			{
+			  new->cti = 0;
+			  break;
+			}
+		      new = new->next;
+		    }
+		}
+	    } /* if stat(file).. */
+	} /* if !CLT_INACTIVE */
+    } /* loop over clients */
   return;
 }
