X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=server%2Fstatserv.c;h=aab25b6d0c40b551f4a36e43675290a82ca20f4d;hb=29ad0d85b05dd7ed7a68a01b87ebce5195bdbb85;hp=0ef6878b15364e218fe36c72a085cdc77a54ce17;hpb=2c77fc43bcc40cc4786a39b14c76a481dbe66ffe;p=yaz-moved-to-github.git diff --git a/server/statserv.c b/server/statserv.c index 0ef6878..aab25b6 100644 --- a/server/statserv.c +++ b/server/statserv.c @@ -7,7 +7,13 @@ * Chas Woodfield, Fretwell Downing Datasystems. * * $Log: statserv.c,v $ - * Revision 1.60 2000-03-14 09:06:11 adam + * Revision 1.62 2000-03-17 12:47:02 adam + * Minor changes to admin client. + * + * Revision 1.61 2000/03/15 12:59:49 adam + * Added handle member to statserv_control. + * + * Revision 1.60 2000/03/14 09:06:11 adam * Added POSIX threads support for frontend server. * * Revision 1.59 1999/11/30 13:47:12 adam @@ -264,7 +270,8 @@ statserv_options_block control_block = { check_options, /* Default routine, for checking the run-time arguments */ check_ip_tcpd, "", - 0 /* default value for inet deamon */ + 0, /* default value for inet deamon */ + 0, /* handle (for service, etc) */ #ifdef WIN32 ,"Z39.50 Server", /* NT Service Name */ @@ -537,10 +544,20 @@ void statserv_remove(IOCHAN pIOChannel) void statserv_closedown() { IOCHAN p; + + if (control_block.bend_stop) + (*control_block.bend_stop)(&control_block); + for (p = pListener; p; p = p->next) iochan_destroy(p); } +void sigterm(int sig) +{ + statserv_closedown(); + exit (0); +} + static void *new_session (void *vp); static void listener(IOCHAN h, int event) @@ -848,8 +865,10 @@ int statserv_start(int argc, char **argv) me++; else me = argv[0]; + logf (LOG_LOG, "Starting server %s", me); #else me = argv[0]; + logf (LOG_LOG, "Starting server %s pid=%d", me, getpid()); #endif if (control_block.options_func(argc, argv)) return(1); @@ -864,6 +883,7 @@ int statserv_start(int argc, char **argv) if (control_block.dynamic) signal(SIGCHLD, catchchld); } + signal (SIGTERM, sigterm); if (*control_block.setuid) { struct passwd *pw; @@ -927,6 +947,7 @@ int check_options(int argc, char **argv) control_block.threads = 1; #else fprintf(stderr, "%s: Threaded mode not available.\n", me); + return 1; #endif break; case 'l': @@ -972,7 +993,7 @@ int check_options(int argc, char **argv) if (chdir(arg)) { perror(arg); - return(1); + return 1; } break; default: @@ -980,7 +1001,7 @@ int check_options(int argc, char **argv) " -l -u -c -t " " -k -d " " -zsiST -w ... ]\n", me); - return(1); + return 1; } } return 0;