At graceful stop, kill children processes
[metaproxy-moved-to-github.git] / src / metaproxy_prog.cpp
index 5a50f44..f8ead5c 100644 (file)
@@ -47,6 +47,16 @@ namespace mp = metaproxy_1;
 
 mp::RouterFleXML *routerp = 0;
 
+static void set_log_prefix(void)
+{
+#if HAVE_UNISTD_H
+    char str[80];
+
+    sprintf(str, "%lld", (long long) getpid());
+    yaz_log_init_prefix(str);
+#endif
+}
+
 #if HAVE_UNISTD_H
 static pid_t process_group = 0;
 
@@ -67,6 +77,7 @@ static void sig_term_handler(int s)
 
 static void work_common(void *data)
 {
+    set_log_prefix();
 #if HAVE_UNISTD_H
     process_group = getpgid(0); // save process group ID
 
@@ -79,7 +90,7 @@ static void work_common(void *data)
     mp::Package pack;
     pack.router(*routerp).move();
     yaz_log(YLOG_LOG, "metaproxy stop"); /* only for graceful stop */
-    yaz_daemon_stop();
+    kill(-process_group, SIGTERM); /* kill all children processes as well */
     _exit(0);
 }
 
@@ -109,6 +120,8 @@ static int sc_main(
     const char *pidfile = 0;
     const char *uid = 0;
 
+    set_log_prefix();
+
     while ((ret = options("c{config}:Dh{help}l:p:tu:V{version}w:X",
                           argv, argc, &arg)) != -2)
     {
@@ -185,11 +198,11 @@ static int sc_main(
         return 1;
     }
 
-    if (!test_config)
-        yaz_log(YLOG_LOG, "metaproxy start " VERSION
+    yaz_log(YLOG_LOG, "metaproxy %s " VERSION
 #ifdef VERSION_SHA1
                 " " VERSION_SHA1
 #endif
+        , test_config ? "test" : "start"
             );
 
     yaz_log_xml_errors(0, YLOG_LOG);
@@ -249,6 +262,8 @@ static int sc_main(
         ret = 1;
     }
     xmlFreeDoc(doc);
+    if (test_config)
+        yaz_log(YLOG_LOG, "metaproxy test exit code %d", ret);
     return ret;
 }