Remove support for option -t.
[pazpar2-moved-to-github.git] / src / pazpar2.c
index 3352fa0..d7e8c98 100644 (file)
@@ -34,29 +34,25 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 #include <yaz/sc.h>
 
+static struct conf_config *sc_stop_config = 0;
+
 void child_handler(void *data)
 {
-    start_proxy();
-    init_settings();
-
-    if (*global_parameters.settings_path_override)
-        settings_read(global_parameters.settings_path_override);
-    else if (global_parameters.server->settings)
-        settings_read(global_parameters.server->settings);
-    else
-        yaz_log(YLOG_WARN, "No settings-directory specified");
-    global_parameters.odr_in = odr_createmem(ODR_DECODE);
-    global_parameters.odr_out = odr_createmem(ODR_ENCODE);
-
+    struct conf_config *config = (struct conf_config *) data;
+    config_read_settings(config);
 
     pazpar2_event_loop();
-
 }
 
 static void show_version(void)
 {
     char yaz_version_str[80];
-    printf("Pazpar2 " PACKAGE_VERSION "\n");
+    printf("Pazpar2 " PACKAGE_VERSION 
+#ifdef PAZPAR2_VERSION_SHA1
+           " "
+           PAZPAR2_VERSION_SHA1
+#endif
+"\n");
 
     yaz_version(yaz_version_str, 0);
 
@@ -93,6 +89,10 @@ static int sc_main(
     char *arg;
     const char *pidfile = 0;
     const char *uid = 0;
+    int session_timeout = 60;
+    const char *listener_override = 0;
+    const char *proxy_override = 0;
+    struct conf_config *config = 0;
 
 #ifndef WIN32
     if (signal(SIGPIPE, SIG_IGN) == SIG_ERR)
@@ -104,7 +104,7 @@ static int sc_main(
     yaz_log_init_prefix("pazpar2");
     yaz_log_xml_errors(0, YLOG_WARN);
 
-    while ((ret = options("dDf:h:l:p:t:u:VX", argv, argc, &arg)) != -2)
+    while ((ret = options("dDf:h:l:p:T:u:VX", argv, argc, &arg)) != -2)
     {
        switch (ret)
         {
@@ -115,11 +115,13 @@ static int sc_main(
             daemon = 1;
             break;
         case 'f':
-            if (!read_config(arg))
-                exit(1);
+            config = config_create(arg);
+            if (!config)
+                return 1;
+            sc_stop_config = config;
             break;
         case 'h':
-            strcpy(global_parameters.listener_override, arg);
+            listener_override = arg;
             break;
         case 'l':
             yaz_log_init_file(arg);
@@ -128,8 +130,15 @@ static int sc_main(
         case 'p':
             pidfile = arg;
             break;
-        case 't':
-            strcpy(global_parameters.settings_path_override, arg);
+        case 'T':
+           session_timeout = atoi(arg);
+           if (session_timeout < 9 || session_timeout > 86400)
+            {
+                yaz_log(YLOG_FATAL, "Session timeout out of range 10..86400: %d",
+                        session_timeout);
+                return 1;
+            }
+            global_parameters.session_timeout = session_timeout;
             break;
         case 'u':
             uid = arg;
@@ -147,7 +156,7 @@ static int sc_main(
                     "    -h [host:]port          (REST protocol listener)\n"
                     "    -l file                 log to file\n"
                     "    -p pidfile              PID file\n"
-                    "    -t settings\n"
+                    "    -T session_timeout\n"
                     "    -u uid\n"
                     "    -V                      show version\n"
                     "    -X                      debug mode\n"
@@ -172,9 +181,7 @@ static int sc_main(
         yaz_log(YLOG_FATAL, "Load config with -f");
         return 1;
     }
-    global_parameters.server = config->servers;
-
-    ret = start_http_listener();
+    ret = config_start_listeners(config, listener_override, proxy_override);
     if (ret)
         return ret; /* error starting http listener */
 
@@ -183,7 +190,7 @@ static int sc_main(
     yaz_daemon("pazpar2",
                (global_parameters.debug_mode ? YAZ_DAEMON_DEBUG : 0) +
                (daemon ? YAZ_DAEMON_FORK : 0) + YAZ_DAEMON_KEEPALIVE,
-               child_handler, 0 /* child_data */,
+               child_handler, config /* child_data */,
                pidfile, uid);
     return 0;
 }
@@ -191,7 +198,7 @@ static int sc_main(
 
 static void sc_stop(yaz_sc_t s)
 {
-    http_close_server();
+    config_stop_listeners(sc_stop_config);
 }
 
 int main(int argc, char **argv)