/*
* Copyright (c) 1995-2004, Index Data
* See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
*
* NT threaded server code by
* Chas Woodfield, Fretwell Downing Informatics.
*
- * $Id: statserv.c,v 1.4 2004-01-17 01:20:13 adam Exp $
+ * $Id: statserv.c,v 1.8 2004-05-10 10:47:04 adam Exp $
*/
#include <stdio.h>
#endif /* WIN32 */
0, /* SOAP handlers */
"", /* PID fname */
- 0 /* background daemon */
+ 0, /* background daemon */
+ "" /* SSL certificate filename */
};
static int max_sessions = 0;
l = cs_create_host(where, 2, &ap);
if (!l)
{
- yaz_log(LOG_FATAL|LOG_ERRNO, "Failed to listen on %s", where);
+ yaz_log(LOG_FATAL, "Failed to listen on %s", where);
return -1;
}
+ if (*control_block.cert_fname)
+ cs_set_ssl_certificate_file(l, control_block.cert_fname);
+
if (cs_bind(l, ap, CS_SERVER) < 0)
{
yaz_log(LOG_FATAL|LOG_ERRNO, "Failed to bind to %s", where);
inetd_connection(control_block.default_proto);
else
{
+ if (control_block.background)
+ {
+ switch (fork())
+ {
+ case 0:
+ break;
+ case -1:
+ return 1;
+ default:
+ _exit(0);
+ }
+
+ if (setsid() < 0)
+ return 1;
+
+ close(0);
+ close(1);
+ close(2);
+ open("/dev/null",O_RDWR);
+ dup(0); dup(0);
+ }
if (!pListener && *control_block.default_listen)
add_listener(control_block.default_listen,
control_block.default_proto);
exit(1);
}
}
- if (!control_block.inetd && control_block.background)
- {
- switch (fork())
- {
- case 0:
- break;
- case -1:
- return 1;
- default:
- _exit(0);
- }
-
- if (setsid() < 0)
- return 1;
-
- close(0);
- close(1);
- close(2);
- open("/dev/null",O_RDWR);
- dup(0); dup(0);
- }
/* UNIX */
#endif
if ((pListener == NULL) && *control_block.default_listen)
int ret = 0, r;
char *arg;
- while ((ret = options("1a:iszSTl:v:u:c:w:t:k:d:A:p:D", argv, argc, &arg)) != -2)
+ while ((ret = options("1a:iszSTl:v:u:c:w:t:k:d:A:p:DC:",
+ argv, argc, &arg)) != -2)
{
switch (ret)
{
case 'c':
strcpy(control_block.configname, arg ? arg : "");
break;
+ case 'C':
+ strcpy(control_block.cert_fname, arg ? arg : "");
+ break;
case 'd':
strcpy(control_block.daemon_name, arg ? arg : "");
break;
default:
fprintf(stderr, "Usage: %s [ -a <pdufile> -v <loglevel>"
" -l <logfile> -u <user> -c <config> -t <minutes>"
- " -k <kilobytes> -d <daemon> -p <pidfile>"
+ " -k <kilobytes> -d <daemon> -p <pidfile> -C certfile"
" -ziDST1 -w <directory> <listener-addr>... ]\n", me);
return 1;
}