X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=server%2Fstatserv.c;h=9305cdfe9b9be954613e80ca5d65ff3b834ec079;hb=a0bdc8bbd4d346939e7c24fd7e07b6d361d78643;hp=cdf75c397527ceedcf103cb05a7f3c09bf6d0df2;hpb=f3eef298fe7e48d8305dd6b239cc7748561a4d5c;p=yaz-moved-to-github.git diff --git a/server/statserv.c b/server/statserv.c index cdf75c3..9305cdf 100644 --- a/server/statserv.c +++ b/server/statserv.c @@ -7,7 +7,15 @@ * Chas Woodfield, Fretwell Downing Datasystems. * * $Log: statserv.c,v $ - * Revision 1.55 1999-06-10 09:18:54 adam + * Revision 1.57 1999-07-06 12:17:15 adam + * Added option -1 that runs server once (for profiling purposes). + * + * Revision 1.56 1999/06/10 11:45:30 adam + * Added bend_start, bend_stop handlers and removed pre_init. + * Handlers bend_start/bend_stop are called when service/daemon is + * started/stopped. + * + * Revision 1.55 1999/06/10 09:18:54 adam * Modified so that pre_init is called when service/server is started. * * Revision 1.54 1999/04/16 14:45:55 adam @@ -228,6 +236,7 @@ static char *me = "statserver"; int check_options(int argc, char **argv); statserv_options_block control_block = { 1, /* dynamic mode */ + 0, /* one shot (single session) */ LOG_DEFAULT_LEVEL, /* log level */ "", /* no PDUs */ "", /* diagnostic output to stderr */ @@ -237,7 +246,8 @@ statserv_options_block control_block = { 1024*1024, /* maximum PDU size (approx.) to allow */ "default-config", /* configuration name to pass to backend */ "", /* set user id */ - NULL, /* pre init handler */ + 0, /* bend_start handler */ + 0, /* bend_stop handler */ check_options, /* Default routine, for checking the run-time arguments */ check_ip_tcpd, "", @@ -405,6 +415,8 @@ void statserv_closedown() free(pThreadHandles); } + if (control_block.bend_stop) + (*control_block.bend_stop)(&control_block); /* No longer require the critical section, since all threads are dead */ DeleteCriticalSection(&Thread_CritSect); } @@ -803,8 +815,8 @@ int statserv_start(int argc, char **argv) if (control_block.options_func(argc, argv)) return(1); - if (control_block.pre_init) - (*control_block.pre_init)(&control_block); + if (control_block.bend_start) + (*control_block.bend_start)(&control_block); #ifndef WIN32 if (control_block.inetd) inetd_connection(control_block.default_proto); @@ -850,13 +862,17 @@ int check_options(int argc, char **argv) int ret = 0, r; char *arg; - while ((ret = options("a:iszSl:v:u:c:w:t:k:d:", argv, argc, &arg)) != -2) + while ((ret = options("1a:iszSl:v:u:c:w:t:k:d:", argv, argc, &arg)) != -2) { switch (ret) { case 0: add_listener(arg, control_block.default_proto); break; + case '1': + control_block.one_shot = 1; + control_block.dynamic = 0; + break; case 'z': control_block.default_proto = PROTO_Z3950; break;