* \brief Implements GFS logic
*/
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#if YAZ_POSIX_THREADS
#include <pthread.h>
-#elif YAZ_GNU_THREADS
-#include <pth.h>
#endif
#include <fcntl.h>
"", /* PID fname */
0, /* background daemon */
"", /* SSL certificate filename */
- "" /* XML config filename */
+ "", /* XML config filename */
+ 1 /* keepalive */
};
static int max_sessions = 0;
pthread_t child_thread;
pthread_create(&child_thread, 0, new_session, new_line);
pthread_detach(child_thread);
-#elif YAZ_GNU_THREADS
- pth_attr_t attr;
- pth_t child_thread;
-
- attr = pth_attr_new();
- pth_attr_set(attr, PTH_ATTR_JOINABLE, FALSE);
- pth_attr_set(attr, PTH_ATTR_STACK_SIZE, 32*1024);
- pth_attr_set(attr, PTH_ATTR_NAME, "session");
- yaz_log(YLOG_DEBUG, "pth_spawn begin");
- child_thread = pth_spawn(attr, new_session, new_line);
- yaz_log(YLOG_DEBUG, "pth_spawn finish");
- pth_attr_destroy(attr);
#else
new_session(new_line);
#endif
get_logbits(1);
- while ((ret = options("1a:iszSTl:v:u:c:w:t:k:d:A:p:DC:f:m:r:",
+ while ((ret = options("1a:iszSTl:v:u:c:w:t:k:Kd:A:p:DC:f:m:r:",
argv, argc, &arg)) != -2)
{
switch (ret)
#if YAZ_POSIX_THREADS
control_block.dynamic = 0;
control_block.threads = 1;
-#elif YAZ_GNU_THREADS
- control_block.dynamic = 0;
- control_block.threads = 1;
#else
fprintf(stderr, "%s: Threaded mode not available.\n", me);
return 1;
}
control_block.maxrecordsize = r * 1024;
break;
+ case 'K':
+ control_block.keepalive = 0;
+ break;
case 'i':
control_block.inetd = 1;
break;